[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f11dd2de-d8fd-4d8f-ba29-6974ba923b4e@suswa.mountain>
Date: Wed, 5 Nov 2025 18:00:31 +0300
From: Dan Carpenter <dan.carpenter@...aro.org>
To: oe-kbuild@...ts.linux.dev, Jai Luthra <jai.luthra@...asonboard.com>,
Florian Fainelli <florian.fainelli@...adcom.com>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@...adcom.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Ray Jui <rjui@...adcom.com>, Scott Branden <sbranden@...adcom.com>
Cc: lkp@...el.com, oe-kbuild-all@...ts.linux.dev,
linux-rpi-kernel@...ts.infradead.org,
linux-arm-kernel@...ts.infradead.org, linux-staging@...ts.linux.dev,
linux-kernel@...r.kernel.org, kernel-list@...pberrypi.com,
Stefan Wahren <wahrenst@....net>,
Dave Stevenson <dave.stevenson@...pberrypi.com>,
Laurent Pinchart <laurent.pinchart@...asonboard.com>,
Kieran Bingham <kieran.bingham@...asonboard.com>,
Phil Elwell <phil@...pberrypi.com>, Umang Jain <uajain@...lia.com>,
Jai Luthra <jai.luthra@...asonboard.com>
Subject: Re: [PATCH v3 6/7] platform/raspberrypi: Destage VCHIQ interface
Hi Jai,
kernel test robot noticed the following build warnings:
url: https://github.com/intel-lab-lkp/linux/commits/Jai-Luthra/staging-vc04_services-Drop-bcm2835-camera-driver/20251029-184912
base: dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa
patch link: https://lore.kernel.org/r/20251029-vchiq-destage-v3-6-da8d6c83c2c5%40ideasonboard.com
patch subject: [PATCH v3 6/7] platform/raspberrypi: Destage VCHIQ interface
config: arm-randconfig-r071-20251102 (https://download.01.org/0day-ci/archive/20251103/202511031105.3z4Gf3FT-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project d2625a438020ad35330cda29c3def102c1687b1b)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Reported-by: Dan Carpenter <dan.carpenter@...aro.org>
| Closes: https://lore.kernel.org/r/202511031105.3z4Gf3FT-lkp@intel.com/
smatch warnings:
drivers/platform/raspberrypi/vchiq-interface/vchiq_dev.c:602 vchiq_ioctl() warn: iterator 'i' not incremented
drivers/platform/raspberrypi/vchiq-interface/vchiq_dev.c:1250 vchiq_release() warn: iterator 'i' not incremented
vim +/i +602 drivers/platform/raspberrypi/vchiq-interface/vchiq_dev.c
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 583 static long
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 584 vchiq_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 585 {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 586 struct vchiq_instance *instance = file->private_data;
3414994ba84042 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 587 int status = 0;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 588 struct vchiq_service *service = NULL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 589 long ret = 0;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 590 int i, rc;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 591
96622d58f50b8f drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Thomas Weißschuh 2025-03-11 592 dev_dbg(instance->state->dev, "arm: instance %p, cmd %s, arg %lx\n", instance,
8757f705d936ad drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Gaston Gonzalez 2021-09-12 593 ((_IOC_TYPE(cmd) == VCHIQ_IOC_MAGIC) && (_IOC_NR(cmd) <= VCHIQ_IOC_MAX)) ?
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 594 ioctl_names[_IOC_NR(cmd)] : "<invalid>", arg);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 595
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 596 switch (cmd) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 597 case VCHIQ_IOC_SHUTDOWN:
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 598 if (!instance->connected)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 599 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 600
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 601 /* Remove all services */
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 @602 i = 0;
i is not used any more. Delete.
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 603 while ((service = next_service_by_instance(instance->state,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 604 instance, &i))) {
14780bb174266e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Adrien Thierry 2022-05-18 605 status = vchiq_remove_service(instance, service->handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 606 vchiq_service_put(service);
3414994ba84042 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 607 if (status)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 608 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 609 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 610 service = NULL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 611
3414994ba84042 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 612 if (!status) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 613 /* Wake the completion thread and ask it to exit */
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 614 instance->closing = 1;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 615 complete(&instance->insert_event);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 616 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 617
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 618 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 619
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 620 case VCHIQ_IOC_CONNECT:
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 621 if (instance->connected) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 622 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 623 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 624 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 625 rc = mutex_lock_killable(&instance->state->mutex);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 626 if (rc) {
e70f17ed997cb7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 627 dev_err(instance->state->dev,
e70f17ed997cb7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 628 "arm: vchiq: connect: could not lock mutex for state %d: %d\n",
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 629 instance->state->id, rc);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 630 ret = -EINTR;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 631 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 632 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 633 status = vchiq_connect_internal(instance->state, instance);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 634 mutex_unlock(&instance->state->mutex);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 635
3414994ba84042 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 636 if (!status)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 637 instance->connected = 1;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 638 else
e70f17ed997cb7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 639 dev_err(instance->state->dev,
e70f17ed997cb7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 640 "arm: vchiq: could not connect: %d\n", status);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 641 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 642
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 643 case VCHIQ_IOC_CREATE_SERVICE: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 644 struct vchiq_create_service __user *argp;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 645 struct vchiq_create_service args;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 646
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 647 argp = (void __user *)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 648 if (copy_from_user(&args, argp, sizeof(args))) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 649 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 650 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 651 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 652
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 653 ret = vchiq_ioc_create_service(instance, &args);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 654 if (ret < 0)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 655 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 656
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 657 if (put_user(args.handle, &argp->handle)) {
14780bb174266e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Adrien Thierry 2022-05-18 658 vchiq_remove_service(instance, args.handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 659 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 660 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 661 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 662
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 663 case VCHIQ_IOC_CLOSE_SERVICE:
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 664 case VCHIQ_IOC_REMOVE_SERVICE: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 665 unsigned int handle = (unsigned int)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 666 struct user_service *user_service;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 667
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 668 service = find_service_for_instance(instance, handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 669 if (!service) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 670 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 671 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 672 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 673
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 674 user_service = service->base.userdata;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 675
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 676 /*
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 677 * close_pending is false on first entry, and when the
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 678 * wait in vchiq_close_service has been interrupted.
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 679 */
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 680 if (!user_service->close_pending) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 681 status = (cmd == VCHIQ_IOC_CLOSE_SERVICE) ?
14780bb174266e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Adrien Thierry 2022-05-18 682 vchiq_close_service(instance, service->handle) :
14780bb174266e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Adrien Thierry 2022-05-18 683 vchiq_remove_service(instance, service->handle);
3414994ba84042 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 684 if (status)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 685 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 686 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 687
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 688 /*
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 689 * close_pending is true once the underlying service
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 690 * has been closed until the client library calls the
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 691 * CLOSE_DELIVERED ioctl, signalling close_event.
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 692 */
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 693 if (user_service->close_pending &&
8757f705d936ad drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Gaston Gonzalez 2021-09-12 694 wait_for_completion_interruptible(&user_service->close_event))
82a9eb4a3561e1 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 695 status = -EAGAIN;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 696 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 697 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 698
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 699 case VCHIQ_IOC_USE_SERVICE:
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 700 case VCHIQ_IOC_RELEASE_SERVICE: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 701 unsigned int handle = (unsigned int)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 702
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 703 service = find_service_for_instance(instance, handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 704 if (service) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 705 ret = (cmd == VCHIQ_IOC_USE_SERVICE) ?
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 706 vchiq_use_service_internal(service) :
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 707 vchiq_release_service_internal(service);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 708 if (ret) {
e70f17ed997cb7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 709 dev_err(instance->state->dev,
e70f17ed997cb7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 710 "suspend: cmd %s returned error %ld for service %p4cc:%03d\n",
e70f17ed997cb7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 711 (cmd == VCHIQ_IOC_USE_SERVICE) ?
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 712 "VCHIQ_IOC_USE_SERVICE" :
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 713 "VCHIQ_IOC_RELEASE_SERVICE",
ae094de38e430e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-10-25 714 ret, &service->base.fourcc,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 715 service->client_id);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 716 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 717 } else {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 718 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 719 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 720 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 721
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 722 case VCHIQ_IOC_QUEUE_MESSAGE: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 723 struct vchiq_queue_message args;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 724
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 725 if (copy_from_user(&args, (const void __user *)arg,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 726 sizeof(args))) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 727 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 728 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 729 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 730
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 731 service = find_service_for_instance(instance, args.handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 732
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 733 if (service && (args.count <= MAX_ELEMENTS)) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 734 /* Copy elements into kernel space */
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 735 struct vchiq_element elements[MAX_ELEMENTS];
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 736
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 737 if (copy_from_user(elements, args.elements,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 738 args.count * sizeof(struct vchiq_element)) == 0)
14780bb174266e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Adrien Thierry 2022-05-18 739 ret = vchiq_ioc_queue_message(instance, args.handle, elements,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 740 args.count);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 741 else
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 742 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 743 } else {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 744 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 745 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 746 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 747
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 748 case VCHIQ_IOC_QUEUE_BULK_TRANSMIT:
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 749 case VCHIQ_IOC_QUEUE_BULK_RECEIVE: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 750 struct vchiq_queue_bulk_transfer args;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 751 struct vchiq_queue_bulk_transfer __user *argp;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 752
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 753 enum vchiq_bulk_dir dir =
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 754 (cmd == VCHIQ_IOC_QUEUE_BULK_TRANSMIT) ?
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 755 VCHIQ_BULK_TRANSMIT : VCHIQ_BULK_RECEIVE;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 756
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 757 argp = (void __user *)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 758 if (copy_from_user(&args, argp, sizeof(args))) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 759 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 760 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 761 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 762
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 763 ret = vchiq_irq_queue_bulk_tx_rx(instance, &args,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 764 dir, &argp->mode);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 765 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 766
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 767 case VCHIQ_IOC_AWAIT_COMPLETION: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 768 struct vchiq_await_completion args;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 769 struct vchiq_await_completion __user *argp;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 770
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 771 argp = (void __user *)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 772 if (copy_from_user(&args, argp, sizeof(args))) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 773 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 774 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 775 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 776
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 777 ret = vchiq_ioc_await_completion(instance, &args,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 778 &argp->msgbufcount);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 779 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 780
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 781 case VCHIQ_IOC_DEQUEUE_MESSAGE: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 782 struct vchiq_dequeue_message args;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 783
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 784 if (copy_from_user(&args, (const void __user *)arg,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 785 sizeof(args))) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 786 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 787 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 788 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 789
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 790 ret = vchiq_ioc_dequeue_message(instance, &args);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 791 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 792
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 793 case VCHIQ_IOC_GET_CLIENT_ID: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 794 unsigned int handle = (unsigned int)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 795
bad44825fbf5ad drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Adrien Thierry 2022-05-18 796 ret = vchiq_get_client_id(instance, handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 797 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 798
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 799 case VCHIQ_IOC_GET_CONFIG: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 800 struct vchiq_get_config args;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 801 struct vchiq_config config;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 802
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 803 if (copy_from_user(&args, (const void __user *)arg,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 804 sizeof(args))) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 805 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 806 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 807 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 808 if (args.config_size > sizeof(config)) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 809 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 810 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 811 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 812
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 813 vchiq_get_config(&config);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 814 if (copy_to_user(args.pconfig, &config, args.config_size)) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 815 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 816 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 817 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 818 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 819
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 820 case VCHIQ_IOC_SET_SERVICE_OPTION: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 821 struct vchiq_set_service_option args;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 822
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 823 if (copy_from_user(&args, (const void __user *)arg,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 824 sizeof(args))) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 825 ret = -EFAULT;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 826 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 827 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 828
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 829 service = find_service_for_instance(instance, args.handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 830 if (!service) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 831 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 832 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 833 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 834
14780bb174266e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Adrien Thierry 2022-05-18 835 ret = vchiq_set_service_option(instance, args.handle, args.option,
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 836 args.value);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 837 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 838
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 839 case VCHIQ_IOC_LIB_VERSION: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 840 unsigned int lib_version = (unsigned int)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 841
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 842 if (lib_version < VCHIQ_VERSION_MIN)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 843 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 844 else if (lib_version >= VCHIQ_VERSION_CLOSE_DELIVERED)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 845 instance->use_close_delivered = 1;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 846 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 847
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 848 case VCHIQ_IOC_CLOSE_DELIVERED: {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 849 unsigned int handle = (unsigned int)arg;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 850
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 851 service = find_closed_service_for_instance(instance, handle);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 852 if (service) {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 853 struct user_service *user_service =
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 854 (struct user_service *)service->base.userdata;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 855 close_delivered(user_service);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 856 } else {
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 857 ret = -EINVAL;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 858 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 859 } break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 860
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 861 default:
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 862 ret = -ENOTTY;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 863 break;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 864 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 865
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 866 if (service)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 867 vchiq_service_put(service);
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 868
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 869 if (ret == 0) {
ab73dc85328195 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 870 if (status == -EINVAL)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 871 ret = -EIO;
82a9eb4a3561e1 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2022-12-23 872 else if (status == -EAGAIN)
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 873 ret = -EINTR;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 874 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 875
f67af5940d6d2e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-10-24 876 if (!status && (ret < 0) && (ret != -EINTR) && (ret != -EWOULDBLOCK)) {
55e23aa95b1073 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 877 dev_dbg(instance->state->dev,
96622d58f50b8f drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Thomas Weißschuh 2025-03-11 878 "arm: ioctl instance %p, cmd %s -> status %d, %ld\n",
8757f705d936ad drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Gaston Gonzalez 2021-09-12 879 instance, (_IOC_NR(cmd) <= VCHIQ_IOC_MAX) ?
8757f705d936ad drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Gaston Gonzalez 2021-09-12 880 ioctl_names[_IOC_NR(cmd)] : "<invalid>", status, ret);
f67af5940d6d2e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-10-24 881 } else {
078666d7ee6d3c drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-12-05 882 dev_dbg(instance->state->dev,
96622d58f50b8f drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Thomas Weißschuh 2025-03-11 883 "arm: ioctl instance %p, cmd %s -> status %d\n, %ld\n",
8757f705d936ad drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Gaston Gonzalez 2021-09-12 884 instance, (_IOC_NR(cmd) <= VCHIQ_IOC_MAX) ?
8757f705d936ad drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Gaston Gonzalez 2021-09-12 885 ioctl_names[_IOC_NR(cmd)] : "<invalid>", status, ret);
f67af5940d6d2e drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Umang Jain 2023-10-24 886 }
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 887
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 888 return ret;
f05916281fd75d drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c Ojaswin Mujoo 2021-07-21 889 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists