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: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-02 12:15 [Intel-gfx] [PATCH v7 0/9] Enhance vfio PCI hot reset for vfio cdev device Yi Liu
2023-06-02 12:15 ` [Intel-gfx] [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] [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] [PATCH v7 3/9] iommufd: Reserve all negative IDs in the iommufd xarray Yi Liu
2023-06-13 11:46 ` Jason Gunthorpe
2023-06-02 12:15 ` [Intel-gfx] [PATCH v7 4/9] iommufd: Add iommufd_ctx_has_group() Yi Liu
2023-06-08 21:40 ` Alex Williamson
2023-06-08 23:44 ` Liu, Yi L
2023-06-13 11:46 ` Jason Gunthorpe
2023-06-02 12:15 ` [Intel-gfx] [PATCH v7 5/9] iommufd: Add helper to retrieve iommufd_ctx and devid Yi Liu
2023-06-13 11:47 ` Jason Gunthorpe
2023-06-02 12:15 ` [Intel-gfx] [PATCH v7 6/9] vfio: Mark cdev usage in vfio_device Yi Liu
2023-06-13 17:56 ` Jason Gunthorpe
2023-06-14 5:56 ` Liu, Yi L
2023-06-14 12:11 ` Jason Gunthorpe
2023-06-02 12:15 ` Yi Liu [this message]
2023-06-13 11:47 ` [Intel-gfx] [PATCH v7 7/9] vfio: Add helper to search vfio_device in a dev_set Jason Gunthorpe
2023-06-02 12:15 ` [Intel-gfx] [PATCH v7 8/9] vfio/pci: Extend VFIO_DEVICE_GET_PCI_HOT_RESET_INFO for vfio device cdev Yi Liu
2023-06-08 22:26 ` Alex Williamson
2023-06-09 0:04 ` Liu, Yi L
2023-06-13 11:46 ` Jason Gunthorpe
2023-06-13 12:50 ` Liu, Yi L
2023-06-13 14:32 ` Alex Williamson
2023-06-13 17:40 ` Jason Gunthorpe
2023-06-13 18:23 ` Jason Gunthorpe
2023-06-14 10:35 ` Liu, Yi L
2023-06-14 12:17 ` Jason Gunthorpe
2023-06-14 13:05 ` Liu, Yi L
2023-06-14 13:37 ` Jason Gunthorpe
2023-06-15 3:31 ` Liu, Yi L
2023-06-02 12:15 ` [Intel-gfx] [PATCH v7 9/9] vfio/pci: Allow passing zero-length fd array in VFIO_DEVICE_PCI_HOT_RESET Yi Liu
2023-06-08 22:30 ` Alex Williamson
2023-06-09 0:13 ` Liu, Yi L
2023-06-09 14:38 ` Jason Gunthorpe
2023-06-13 18:09 ` 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 ` [Intel-gfx] [PATCH v7 0/9] Enhance vfio PCI hot reset for vfio cdev device 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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox