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 0/9] Enhance vfio PCI hot reset for vfio cdev device Date: Fri, 2 Jun 2023 05:15:06 -0700 [thread overview] Message-ID: <20230602121515.79374-1-yi.l.liu@intel.com> (raw) VFIO_DEVICE_PCI_HOT_RESET requires user to pass an array of group fds to prove that it owns all devices affected by resetting the calling device. While for cdev devices, user can use an iommufd-based ownership checking model and invoke VFIO_DEVICE_PCI_HOT_RESET with a zero-length fd array. This series extends VFIO_DEVICE_GET_PCI_HOT_RESET_INFO to check ownership and return the check result and the devid of affected devices to user. In the end, extends the VFIO_DEVICE_PCI_HOT_RESET to accept zero-length fd array for hot-reset with cdev devices. The new hot reset method and updated _INFO ioctl are tested with the below qemu: https://github.com/yiliu1765/qemu/tree/iommufd_rfcv4.mig.reset.v4_var3 (requires to test with the cdev kernel) Change log: v7: - Drop noiommu support (patch 01 of v6 is dropped) - Remove helpers to get devid and ictx for iommufd_access - Document the dev_set representative requirement in the VFIO_DEVICE_GET_PCI_HOT_RESET_INFO for the cdev opened device (Alex) - zero-length fd array approach is only for cdev opened device (Alex) v6: https://lore.kernel.org/kvm/20230522115751.326947-1-yi.l.liu@intel.com/ - Remove noiommu_access, reuse iommufd_access instead (Alex) - vfio_iommufd_physical_ictx -> vfio_iommufd_device_ictx - vfio_iommufd_physical_devid -> vfio_iommufd_device_hot_reset_devid - Refine logic in patch 9 and 10 of v5, no uapi change. (Alex) - Remove lockdep asset in vfio_pci_is_device_in_set (Cédric) - Add t-b from Terrence (Tested GVT-g / GVT-d VFIO legacy mode / compat mode / cdev mode, including negative tests. No regression be introduced.) v5: https://lore.kernel.org/kvm/20230513132136.15021-1-yi.l.liu@intel.com/ - Drop patch 01 of v4 (Alex) - Create noiommu_access for noiommu devices (Jason) - Reserve all negative iommufd IDs, hence VFIO can encode negative values (Jason) - Make vfio_iommufd_physical_devid() return -EINVAL if it's not called with a physical device or a noiommu device. - Add vfio_find_device_in_devset() in vfio_main.c (Alex) - Add iommufd_ctx_has_group() to replace vfio_devset_iommufd_has_group(). Reason: vfio_devset_iommufd_has_group() only loops the devices within the given devset to check the iommufd an iommu_group, but an iommu_group can span into multiple devsets. So if failed to find the group in a devset doesn't mean the group is not owned by the iommufd. So here either needs to search all the devsets or add an iommufd API to check it. It appears an iommufd API makes more sense. - Adopt suggestions from Alex on patch 08 and 09 of v4, refine the hot-reset uapi description and minor tweaks - Use bitfields for bool members (Alex) v4: https://lore.kernel.org/kvm/20230426145419.450922-1-yi.l.liu@intel.com/ - Rename the patch series subject - Patch 01 is moved from the cdev series - Patch 02, 06 are new per review comments in v3 - Patch 03/04/05/07/08/09 are from v3 with updates v3: https://lore.kernel.org/kvm/20230401144429.88673-1-yi.l.liu@intel.com/ - Remove the new _INFO ioctl of v2, extend the existing _INFO ioctl to report devid (Alex) - Add r-b from Jason - Add t-b from Terrence Xu and Yanting Jiang (mainly regression test) v2: https://lore.kernel.org/kvm/20230327093458.44939-1-yi.l.liu@intel.com/ - Split the patch 03 of v1 to be 03, 04 and 05 of v2 (Jaon) - Add r-b from Kevin and Jason - Add patch 10 to introduce a new _INFO ioctl for the usage of device fd passing usage in cdev path (Jason, Alex) v1: https://lore.kernel.org/kvm/20230316124156.12064-1-yi.l.liu@intel.com/ Regards, Yi Liu Yi Liu (9): vfio/pci: Update comment around group_fd get in vfio_pci_ioctl_pci_hot_reset() vfio/pci: Move the existing hot reset logic to be a helper iommufd: Reserve all negative IDs in the iommufd xarray iommufd: Add iommufd_ctx_has_group() iommufd: Add helper to retrieve iommufd_ctx and devid vfio: Mark cdev usage in vfio_device vfio: Add helper to search vfio_device in a dev_set vfio/pci: Extend VFIO_DEVICE_GET_PCI_HOT_RESET_INFO for vfio device cdev vfio/pci: Allow passing zero-length fd array in VFIO_DEVICE_PCI_HOT_RESET drivers/iommu/iommufd/device.c | 42 ++++++++ drivers/iommu/iommufd/main.c | 2 +- drivers/vfio/iommufd.c | 49 +++++++++ drivers/vfio/pci/vfio_pci_core.c | 170 ++++++++++++++++++++++--------- drivers/vfio/vfio_main.c | 15 +++ include/linux/iommufd.h | 11 ++ include/linux/vfio.h | 24 +++++ include/uapi/linux/vfio.h | 64 +++++++++++- 8 files changed, 328 insertions(+), 49 deletions(-) -- 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 0/9] Enhance vfio PCI hot reset for vfio cdev device Date: Fri, 2 Jun 2023 05:15:06 -0700 [thread overview] Message-ID: <20230602121515.79374-1-yi.l.liu@intel.com> (raw) VFIO_DEVICE_PCI_HOT_RESET requires user to pass an array of group fds to prove that it owns all devices affected by resetting the calling device. While for cdev devices, user can use an iommufd-based ownership checking model and invoke VFIO_DEVICE_PCI_HOT_RESET with a zero-length fd array. This series extends VFIO_DEVICE_GET_PCI_HOT_RESET_INFO to check ownership and return the check result and the devid of affected devices to user. In the end, extends the VFIO_DEVICE_PCI_HOT_RESET to accept zero-length fd array for hot-reset with cdev devices. The new hot reset method and updated _INFO ioctl are tested with the below qemu: https://github.com/yiliu1765/qemu/tree/iommufd_rfcv4.mig.reset.v4_var3 (requires to test with the cdev kernel) Change log: v7: - Drop noiommu support (patch 01 of v6 is dropped) - Remove helpers to get devid and ictx for iommufd_access - Document the dev_set representative requirement in the VFIO_DEVICE_GET_PCI_HOT_RESET_INFO for the cdev opened device (Alex) - zero-length fd array approach is only for cdev opened device (Alex) v6: https://lore.kernel.org/kvm/20230522115751.326947-1-yi.l.liu@intel.com/ - Remove noiommu_access, reuse iommufd_access instead (Alex) - vfio_iommufd_physical_ictx -> vfio_iommufd_device_ictx - vfio_iommufd_physical_devid -> vfio_iommufd_device_hot_reset_devid - Refine logic in patch 9 and 10 of v5, no uapi change. (Alex) - Remove lockdep asset in vfio_pci_is_device_in_set (Cédric) - Add t-b from Terrence (Tested GVT-g / GVT-d VFIO legacy mode / compat mode / cdev mode, including negative tests. No regression be introduced.) v5: https://lore.kernel.org/kvm/20230513132136.15021-1-yi.l.liu@intel.com/ - Drop patch 01 of v4 (Alex) - Create noiommu_access for noiommu devices (Jason) - Reserve all negative iommufd IDs, hence VFIO can encode negative values (Jason) - Make vfio_iommufd_physical_devid() return -EINVAL if it's not called with a physical device or a noiommu device. - Add vfio_find_device_in_devset() in vfio_main.c (Alex) - Add iommufd_ctx_has_group() to replace vfio_devset_iommufd_has_group(). Reason: vfio_devset_iommufd_has_group() only loops the devices within the given devset to check the iommufd an iommu_group, but an iommu_group can span into multiple devsets. So if failed to find the group in a devset doesn't mean the group is not owned by the iommufd. So here either needs to search all the devsets or add an iommufd API to check it. It appears an iommufd API makes more sense. - Adopt suggestions from Alex on patch 08 and 09 of v4, refine the hot-reset uapi description and minor tweaks - Use bitfields for bool members (Alex) v4: https://lore.kernel.org/kvm/20230426145419.450922-1-yi.l.liu@intel.com/ - Rename the patch series subject - Patch 01 is moved from the cdev series - Patch 02, 06 are new per review comments in v3 - Patch 03/04/05/07/08/09 are from v3 with updates v3: https://lore.kernel.org/kvm/20230401144429.88673-1-yi.l.liu@intel.com/ - Remove the new _INFO ioctl of v2, extend the existing _INFO ioctl to report devid (Alex) - Add r-b from Jason - Add t-b from Terrence Xu and Yanting Jiang (mainly regression test) v2: https://lore.kernel.org/kvm/20230327093458.44939-1-yi.l.liu@intel.com/ - Split the patch 03 of v1 to be 03, 04 and 05 of v2 (Jaon) - Add r-b from Kevin and Jason - Add patch 10 to introduce a new _INFO ioctl for the usage of device fd passing usage in cdev path (Jason, Alex) v1: https://lore.kernel.org/kvm/20230316124156.12064-1-yi.l.liu@intel.com/ Regards, Yi Liu Yi Liu (9): vfio/pci: Update comment around group_fd get in vfio_pci_ioctl_pci_hot_reset() vfio/pci: Move the existing hot reset logic to be a helper iommufd: Reserve all negative IDs in the iommufd xarray iommufd: Add iommufd_ctx_has_group() iommufd: Add helper to retrieve iommufd_ctx and devid vfio: Mark cdev usage in vfio_device vfio: Add helper to search vfio_device in a dev_set vfio/pci: Extend VFIO_DEVICE_GET_PCI_HOT_RESET_INFO for vfio device cdev vfio/pci: Allow passing zero-length fd array in VFIO_DEVICE_PCI_HOT_RESET drivers/iommu/iommufd/device.c | 42 ++++++++ drivers/iommu/iommufd/main.c | 2 +- drivers/vfio/iommufd.c | 49 +++++++++ drivers/vfio/pci/vfio_pci_core.c | 170 ++++++++++++++++++++++--------- drivers/vfio/vfio_main.c | 15 +++ include/linux/iommufd.h | 11 ++ include/linux/vfio.h | 24 +++++ include/uapi/linux/vfio.h | 64 +++++++++++- 8 files changed, 328 insertions(+), 49 deletions(-) -- 2.34.1
next 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 Yi Liu [this message] 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 ` [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 ` [PATCH v7 7/9] vfio: Add helper to search vfio_device in a dev_set Yi Liu 2023-06-02 12:15 ` [Intel-gfx] " 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-1-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.