From: Yi Liu <yi.l.liu@intel.com> To: alex.williamson@redhat.com, jgg@nvidia.com, kevin.tian@intel.com Cc: joro@8bytes.org, robin.murphy@arm.com, cohuck@redhat.com, eric.auger@redhat.com, nicolinc@nvidia.com, kvm@vger.kernel.org, mjrosato@linux.ibm.com, chao.p.peng@linux.intel.com, yi.l.liu@intel.com, yi.y.sun@linux.intel.com, peterx@redhat.com, jasowang@redhat.com, shameerali.kolothum.thodi@huawei.com, lulu@redhat.com, suravee.suthikulpanit@amd.com, intel-gvt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-s390@vger.kernel.org, xudong.hao@intel.com, yan.y.zhao@intel.com, terrence.xu@intel.com, yanting.jiang@intel.com, zhenzhong.duan@intel.com, clegoate@redhat.com Subject: [PATCH v7 7/9] vfio: Add helper to search vfio_device in a dev_set Date: Fri, 2 Jun 2023 05:15:13 -0700 [thread overview] Message-ID: <20230602121515.79374-8-yi.l.liu@intel.com> (raw) In-Reply-To: <20230602121515.79374-1-yi.l.liu@intel.com> There are drivers that need to search vfio_device within a given dev_set. e.g. vfio-pci. So add a helper. vfio_pci_is_device_in_set() now returns -EBUSY in commit a882c16a2b7e ("vfio/pci: Change vfio_pci_try_bus_reset() to use the dev_set") where it was trying to preserve the return of vfio_pci_try_zap_and_vma_lock_cb(). However, it makes more sense to return -ENODEV. Suggested-by: Alex Williamson <alex.williamson@redhat.com> Tested-by: Terrence Xu <terrence.xu@intel.com> Signed-off-by: Yi Liu <yi.l.liu@intel.com> --- drivers/vfio/pci/vfio_pci_core.c | 6 +----- drivers/vfio/vfio_main.c | 15 +++++++++++++++ include/linux/vfio.h | 3 +++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c index 39e7823088e7..3a2f67675036 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -2335,12 +2335,8 @@ static bool vfio_dev_in_groups(struct vfio_pci_core_device *vdev, static int vfio_pci_is_device_in_set(struct pci_dev *pdev, void *data) { struct vfio_device_set *dev_set = data; - struct vfio_device *cur; - list_for_each_entry(cur, &dev_set->device_list, dev_set_list) - if (cur->dev == &pdev->dev) - return 0; - return -EBUSY; + return vfio_find_device_in_devset(dev_set, &pdev->dev) ? 0 : -ENODEV; } /* diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c index f0ca33b2e1df..ab4f3a794f78 100644 --- a/drivers/vfio/vfio_main.c +++ b/drivers/vfio/vfio_main.c @@ -141,6 +141,21 @@ unsigned int vfio_device_set_open_count(struct vfio_device_set *dev_set) } EXPORT_SYMBOL_GPL(vfio_device_set_open_count); +struct vfio_device * +vfio_find_device_in_devset(struct vfio_device_set *dev_set, + struct device *dev) +{ + struct vfio_device *cur; + + lockdep_assert_held(&dev_set->lock); + + list_for_each_entry(cur, &dev_set->device_list, dev_set_list) + if (cur->dev == dev) + return cur; + return NULL; +} +EXPORT_SYMBOL_GPL(vfio_find_device_in_devset); + /* * Device objects - create, release, get, put, search */ diff --git a/include/linux/vfio.h b/include/linux/vfio.h index 2a45853773a6..ee120d2d530b 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -244,6 +244,9 @@ void vfio_unregister_group_dev(struct vfio_device *device); int vfio_assign_device_set(struct vfio_device *device, void *set_id); unsigned int vfio_device_set_open_count(struct vfio_device_set *dev_set); +struct vfio_device * +vfio_find_device_in_devset(struct vfio_device_set *dev_set, + struct device *dev); int vfio_mig_get_next_state(struct vfio_device *device, enum vfio_device_mig_state cur_fsm, -- 2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Yi Liu <yi.l.liu@intel.com> To: alex.williamson@redhat.com, jgg@nvidia.com, kevin.tian@intel.com Cc: mjrosato@linux.ibm.com, jasowang@redhat.com, xudong.hao@intel.com, zhenzhong.duan@intel.com, peterx@redhat.com, terrence.xu@intel.com, chao.p.peng@linux.intel.com, linux-s390@vger.kernel.org, yi.l.liu@intel.com, kvm@vger.kernel.org, lulu@redhat.com, yanting.jiang@intel.com, joro@8bytes.org, nicolinc@nvidia.com, yan.y.zhao@intel.com, intel-gfx@lists.freedesktop.org, eric.auger@redhat.com, intel-gvt-dev@lists.freedesktop.org, yi.y.sun@linux.intel.com, clegoate@redhat.com, cohuck@redhat.com, shameerali.kolothum.thodi@huawei.com, suravee.suthikulpanit@amd.com, robin.murphy@arm.com Subject: [Intel-gfx] [PATCH v7 7/9] vfio: Add helper to search vfio_device in a dev_set Date: Fri, 2 Jun 2023 05:15:13 -0700 [thread overview] Message-ID: <20230602121515.79374-8-yi.l.liu@intel.com> (raw) In-Reply-To: <20230602121515.79374-1-yi.l.liu@intel.com> There are drivers that need to search vfio_device within a given dev_set. e.g. vfio-pci. So add a helper. vfio_pci_is_device_in_set() now returns -EBUSY in commit a882c16a2b7e ("vfio/pci: Change vfio_pci_try_bus_reset() to use the dev_set") where it was trying to preserve the return of vfio_pci_try_zap_and_vma_lock_cb(). However, it makes more sense to return -ENODEV. Suggested-by: Alex Williamson <alex.williamson@redhat.com> Tested-by: Terrence Xu <terrence.xu@intel.com> Signed-off-by: Yi Liu <yi.l.liu@intel.com> --- drivers/vfio/pci/vfio_pci_core.c | 6 +----- drivers/vfio/vfio_main.c | 15 +++++++++++++++ include/linux/vfio.h | 3 +++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c index 39e7823088e7..3a2f67675036 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -2335,12 +2335,8 @@ static bool vfio_dev_in_groups(struct vfio_pci_core_device *vdev, static int vfio_pci_is_device_in_set(struct pci_dev *pdev, void *data) { struct vfio_device_set *dev_set = data; - struct vfio_device *cur; - list_for_each_entry(cur, &dev_set->device_list, dev_set_list) - if (cur->dev == &pdev->dev) - return 0; - return -EBUSY; + return vfio_find_device_in_devset(dev_set, &pdev->dev) ? 0 : -ENODEV; } /* diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c index f0ca33b2e1df..ab4f3a794f78 100644 --- a/drivers/vfio/vfio_main.c +++ b/drivers/vfio/vfio_main.c @@ -141,6 +141,21 @@ unsigned int vfio_device_set_open_count(struct vfio_device_set *dev_set) } EXPORT_SYMBOL_GPL(vfio_device_set_open_count); +struct vfio_device * +vfio_find_device_in_devset(struct vfio_device_set *dev_set, + struct device *dev) +{ + struct vfio_device *cur; + + lockdep_assert_held(&dev_set->lock); + + list_for_each_entry(cur, &dev_set->device_list, dev_set_list) + if (cur->dev == dev) + return cur; + return NULL; +} +EXPORT_SYMBOL_GPL(vfio_find_device_in_devset); + /* * Device objects - create, release, get, put, search */ diff --git a/include/linux/vfio.h b/include/linux/vfio.h index 2a45853773a6..ee120d2d530b 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -244,6 +244,9 @@ void vfio_unregister_group_dev(struct vfio_device *device); int vfio_assign_device_set(struct vfio_device *device, void *set_id); unsigned int vfio_device_set_open_count(struct vfio_device_set *dev_set); +struct vfio_device * +vfio_find_device_in_devset(struct vfio_device_set *dev_set, + struct device *dev); int vfio_mig_get_next_state(struct vfio_device *device, enum vfio_device_mig_state cur_fsm, -- 2.34.1
next prev parent reply other threads:[~2023-06-02 12:15 UTC|newest] Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-06-02 12:15 [PATCH v7 0/9] Enhance vfio PCI hot reset for vfio cdev device Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-02 12:15 ` [PATCH v7 1/9] vfio/pci: Update comment around group_fd get in vfio_pci_ioctl_pci_hot_reset() Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-02 12:15 ` [PATCH v7 2/9] vfio/pci: Move the existing hot reset logic to be a helper Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-02 12:15 ` [PATCH v7 3/9] iommufd: Reserve all negative IDs in the iommufd xarray Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-13 11:46 ` Jason Gunthorpe 2023-06-13 11:46 ` [Intel-gfx] " Jason Gunthorpe 2023-06-02 12:15 ` [PATCH v7 4/9] iommufd: Add iommufd_ctx_has_group() Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-08 21:40 ` Alex Williamson 2023-06-08 21:40 ` Alex Williamson 2023-06-08 23:44 ` Liu, Yi L 2023-06-08 23:44 ` [Intel-gfx] " Liu, Yi L 2023-06-13 11:46 ` Jason Gunthorpe 2023-06-13 11:46 ` [Intel-gfx] " Jason Gunthorpe 2023-06-02 12:15 ` [PATCH v7 5/9] iommufd: Add helper to retrieve iommufd_ctx and devid Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-13 11:47 ` Jason Gunthorpe 2023-06-13 11:47 ` [Intel-gfx] " Jason Gunthorpe 2023-06-02 12:15 ` [PATCH v7 6/9] vfio: Mark cdev usage in vfio_device Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-13 17:56 ` Jason Gunthorpe 2023-06-13 17:56 ` [Intel-gfx] " Jason Gunthorpe 2023-06-14 5:56 ` Liu, Yi L 2023-06-14 5:56 ` [Intel-gfx] " Liu, Yi L 2023-06-14 12:11 ` Jason Gunthorpe 2023-06-14 12:11 ` [Intel-gfx] " Jason Gunthorpe 2023-06-02 12:15 ` Yi Liu [this message] 2023-06-02 12:15 ` [Intel-gfx] [PATCH v7 7/9] vfio: Add helper to search vfio_device in a dev_set Yi Liu 2023-06-13 11:47 ` Jason Gunthorpe 2023-06-13 11:47 ` Jason Gunthorpe 2023-06-02 12:15 ` [PATCH v7 8/9] vfio/pci: Extend VFIO_DEVICE_GET_PCI_HOT_RESET_INFO for vfio device cdev Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-08 22:26 ` Alex Williamson 2023-06-08 22:26 ` Alex Williamson 2023-06-09 0:04 ` Liu, Yi L 2023-06-09 0:04 ` [Intel-gfx] " Liu, Yi L 2023-06-13 11:46 ` Jason Gunthorpe 2023-06-13 11:46 ` [Intel-gfx] " Jason Gunthorpe 2023-06-13 12:50 ` Liu, Yi L 2023-06-13 12:50 ` [Intel-gfx] " Liu, Yi L 2023-06-13 14:32 ` Alex Williamson 2023-06-13 14:32 ` Alex Williamson 2023-06-13 17:40 ` Jason Gunthorpe 2023-06-13 17:40 ` [Intel-gfx] " Jason Gunthorpe 2023-06-13 18:23 ` Jason Gunthorpe 2023-06-13 18:23 ` [Intel-gfx] " Jason Gunthorpe 2023-06-14 10:35 ` Liu, Yi L 2023-06-14 10:35 ` [Intel-gfx] " Liu, Yi L 2023-06-14 12:17 ` Jason Gunthorpe 2023-06-14 12:17 ` [Intel-gfx] " Jason Gunthorpe 2023-06-14 13:05 ` Liu, Yi L 2023-06-14 13:05 ` [Intel-gfx] " Liu, Yi L 2023-06-14 13:37 ` Jason Gunthorpe 2023-06-14 13:37 ` [Intel-gfx] " Jason Gunthorpe 2023-06-15 3:31 ` Liu, Yi L 2023-06-15 3:31 ` Liu, Yi L 2023-06-02 12:15 ` [PATCH v7 9/9] vfio/pci: Allow passing zero-length fd array in VFIO_DEVICE_PCI_HOT_RESET Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " Yi Liu 2023-06-08 22:30 ` Alex Williamson 2023-06-08 22:30 ` Alex Williamson 2023-06-09 0:13 ` Liu, Yi L 2023-06-09 0:13 ` [Intel-gfx] " Liu, Yi L 2023-06-09 14:38 ` Jason Gunthorpe 2023-06-09 14:38 ` [Intel-gfx] " Jason Gunthorpe 2023-06-13 18:09 ` Jason Gunthorpe 2023-06-13 18:09 ` [Intel-gfx] " Jason Gunthorpe 2023-06-02 15:14 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Enhance vfio PCI hot reset for vfio cdev device (rev5) Patchwork 2023-06-02 15:29 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2023-06-04 20:05 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork 2023-06-08 6:59 ` [PATCH v7 0/9] Enhance vfio PCI hot reset for vfio cdev device Jiang, Yanting 2023-06-08 6:59 ` [Intel-gfx] " Jiang, Yanting 2023-06-13 20:47 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Enhance vfio PCI hot reset for vfio cdev device (rev6) Patchwork 2023-06-14 15:47 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Enhance vfio PCI hot reset for vfio cdev device (rev7) Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230602121515.79374-8-yi.l.liu@intel.com \ --to=yi.l.liu@intel.com \ --cc=alex.williamson@redhat.com \ --cc=chao.p.peng@linux.intel.com \ --cc=clegoate@redhat.com \ --cc=cohuck@redhat.com \ --cc=eric.auger@redhat.com \ --cc=intel-gfx@lists.freedesktop.org \ --cc=intel-gvt-dev@lists.freedesktop.org \ --cc=jasowang@redhat.com \ --cc=jgg@nvidia.com \ --cc=joro@8bytes.org \ --cc=kevin.tian@intel.com \ --cc=kvm@vger.kernel.org \ --cc=linux-s390@vger.kernel.org \ --cc=lulu@redhat.com \ --cc=mjrosato@linux.ibm.com \ --cc=nicolinc@nvidia.com \ --cc=peterx@redhat.com \ --cc=robin.murphy@arm.com \ --cc=shameerali.kolothum.thodi@huawei.com \ --cc=suravee.suthikulpanit@amd.com \ --cc=terrence.xu@intel.com \ --cc=xudong.hao@intel.com \ --cc=yan.y.zhao@intel.com \ --cc=yanting.jiang@intel.com \ --cc=yi.y.sun@linux.intel.com \ --cc=zhenzhong.duan@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.