From: Jason Gunthorpe <jgg@nvidia.com>
To: Yi Liu <yi.l.liu@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,
kvm@vger.kernel.org, lulu@redhat.com, yanting.jiang@intel.com,
joro@8bytes.org, nicolinc@nvidia.com, kevin.tian@intel.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: Re: [Intel-gfx] [PATCH v13 00/22] Add vfio_device cdev for iommufd support
Date: Fri, 23 Jun 2023 13:48:20 -0300 [thread overview]
Message-ID: <ZJXM1Co96do1a+1p@nvidia.com> (raw)
In-Reply-To: <20230616093946.68711-1-yi.l.liu@intel.com>
On Fri, Jun 16, 2023 at 02:39:24AM -0700, Yi Liu wrote:
> Existing VFIO provides group-centric user APIs for userspace. Userspace
> opens the /dev/vfio/$group_id first before getting device fd and hence
> getting access to device. This is not the desired model for iommufd. Per
> the conclusion of community discussion[1], iommufd provides device-centric
> kAPIs and requires its consumer (like VFIO) to be device-centric user
> APIs. Such user APIs are used to associate device with iommufd and also
> the I/O address spaces managed by the iommufd.
>
> This series first introduces a per device file structure to be prepared
> for further enhancement and refactors the kvm-vfio code to be prepared
> for accepting device file from userspace. After this, adds a mechanism for
> blocking device access before iommufd bind. Then refactors the vfio to be
> able to handle cdev path (e.g. iommufd binding, no-iommufd, [de]attach ioas).
> This refactor includes making the device_open exclusive between the group
> and the cdev path, only allow single device open in cdev path; vfio-iommufd
> code is also refactored to support cdev. e.g. split the vfio_iommufd_bind()
> into two steps. Eventually, adds the cdev support for vfio device and the
> new ioctls, then makes group infrastructure optional as it is not needed
> when vfio device cdev is compiled.
>
> This series is based on some preparation works done to vfio emulated devices[2]
> and vfio pci hot reset enhancements[3].
>
> This series is a prerequisite for iommu nesting for vfio device[4] [5].
>
> The complete code can be found in below branch, simple tests done to the
> legacy group path and the cdev path. Draft QEMU branch can be found at[6]
> However, the noiommu mode test is only done with some hacks in kernel and
> qemu to check if qemu can boot with noiommu devices.
>
> https://github.com/yiliu1765/iommufd/tree/vfio_device_cdev_v13
> (config CONFIG_IOMMUFD=y CONFIG_VFIO_DEVICE_CDEV=y)
>
> base-commit: dcc9d48709e6bc6ec3da97626b8768582e138326
>
> [1] https://lore.kernel.org/kvm/BN9PR11MB5433B1E4AE5B0480369F97178C189@BN9PR11MB5433.namprd11.prod.outlook.com/
> [2] https://lore.kernel.org/kvm/20230327093351.44505-1-yi.l.liu@intel.com/ - merged
> [3] https://lore.kernel.org/kvm/20230616093042.65094-1-yi.l.liu@intel.com/
> [4] https://lore.kernel.org/linux-iommu/20230511143844.22693-1-yi.l.liu@intel.com/
> [5] https://lore.kernel.org/linux-iommu/20230511145110.27707-1-yi.l.liu@intel.com/#t
> [6] https://github.com/yiliu1765/qemu/tree/iommufd_rfcv4.mig.reset.v4_var3
>
> Change log:
>
> v13:
> - vfio_device_first_open() and vfio_device_last_close() to be vfio_df_device_first_open()
> vfio_df_device_last_close() (Alex)
> - Define struct vfio_device_file::access_granted as u8 and also place the u32 devid to
> be behind this flag as this structure access is hot, so needs to avoid too much hole
> in the structure (Alex)
> - Use u8 instead bool in the struct vfio_device for the flags (Alex)
> - Define BIND, ATTACH, DETACH ioctl behind VFIO_DEVICE_FEATURE whose offset is 17 (Alex)
> - Drop patch 20, 21, 22 of v12 (Alex)
> - Per the patch drop, still needs to detect the physical devices that do not have
> IOMMU in the cdev registration as cdev does not support such devices. Per the
> suggestion from Jason, lift the IOMMU_CAP_CACHE_COHERENCY check to be in vfio_main.c
> so that it can fail the registration of such devices if only cdev is compiled. (Jason, Alex)
> - Refine the vfio.rst doc, highlight that the cdev device access is stil bound with
> iommu group. (Alex)
> - Reaffirm t-b from below folks:
> Nicolin Chen - Test nesting branch which is based on cdev v12, the test is done on ARM64 (SMMUv3)
> Matthew Rosato - vfio-pci, vfio-ap, vfio-ccw under container, compat and cdev mode, and nesting
> test on SMMUv3 and Intel.
> Yanting Jiang - regression tests with NIC passthrough on Intel platform
I accendiently put my remarks on v12, but they all apply here, and I
don't have any new remarks for this version.
Thanks,
Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Yi Liu <yi.l.liu@intel.com>
Cc: alex.williamson@redhat.com, kevin.tian@intel.com,
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.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: Re: [PATCH v13 00/22] Add vfio_device cdev for iommufd support
Date: Fri, 23 Jun 2023 13:48:20 -0300 [thread overview]
Message-ID: <ZJXM1Co96do1a+1p@nvidia.com> (raw)
In-Reply-To: <20230616093946.68711-1-yi.l.liu@intel.com>
On Fri, Jun 16, 2023 at 02:39:24AM -0700, Yi Liu wrote:
> Existing VFIO provides group-centric user APIs for userspace. Userspace
> opens the /dev/vfio/$group_id first before getting device fd and hence
> getting access to device. This is not the desired model for iommufd. Per
> the conclusion of community discussion[1], iommufd provides device-centric
> kAPIs and requires its consumer (like VFIO) to be device-centric user
> APIs. Such user APIs are used to associate device with iommufd and also
> the I/O address spaces managed by the iommufd.
>
> This series first introduces a per device file structure to be prepared
> for further enhancement and refactors the kvm-vfio code to be prepared
> for accepting device file from userspace. After this, adds a mechanism for
> blocking device access before iommufd bind. Then refactors the vfio to be
> able to handle cdev path (e.g. iommufd binding, no-iommufd, [de]attach ioas).
> This refactor includes making the device_open exclusive between the group
> and the cdev path, only allow single device open in cdev path; vfio-iommufd
> code is also refactored to support cdev. e.g. split the vfio_iommufd_bind()
> into two steps. Eventually, adds the cdev support for vfio device and the
> new ioctls, then makes group infrastructure optional as it is not needed
> when vfio device cdev is compiled.
>
> This series is based on some preparation works done to vfio emulated devices[2]
> and vfio pci hot reset enhancements[3].
>
> This series is a prerequisite for iommu nesting for vfio device[4] [5].
>
> The complete code can be found in below branch, simple tests done to the
> legacy group path and the cdev path. Draft QEMU branch can be found at[6]
> However, the noiommu mode test is only done with some hacks in kernel and
> qemu to check if qemu can boot with noiommu devices.
>
> https://github.com/yiliu1765/iommufd/tree/vfio_device_cdev_v13
> (config CONFIG_IOMMUFD=y CONFIG_VFIO_DEVICE_CDEV=y)
>
> base-commit: dcc9d48709e6bc6ec3da97626b8768582e138326
>
> [1] https://lore.kernel.org/kvm/BN9PR11MB5433B1E4AE5B0480369F97178C189@BN9PR11MB5433.namprd11.prod.outlook.com/
> [2] https://lore.kernel.org/kvm/20230327093351.44505-1-yi.l.liu@intel.com/ - merged
> [3] https://lore.kernel.org/kvm/20230616093042.65094-1-yi.l.liu@intel.com/
> [4] https://lore.kernel.org/linux-iommu/20230511143844.22693-1-yi.l.liu@intel.com/
> [5] https://lore.kernel.org/linux-iommu/20230511145110.27707-1-yi.l.liu@intel.com/#t
> [6] https://github.com/yiliu1765/qemu/tree/iommufd_rfcv4.mig.reset.v4_var3
>
> Change log:
>
> v13:
> - vfio_device_first_open() and vfio_device_last_close() to be vfio_df_device_first_open()
> vfio_df_device_last_close() (Alex)
> - Define struct vfio_device_file::access_granted as u8 and also place the u32 devid to
> be behind this flag as this structure access is hot, so needs to avoid too much hole
> in the structure (Alex)
> - Use u8 instead bool in the struct vfio_device for the flags (Alex)
> - Define BIND, ATTACH, DETACH ioctl behind VFIO_DEVICE_FEATURE whose offset is 17 (Alex)
> - Drop patch 20, 21, 22 of v12 (Alex)
> - Per the patch drop, still needs to detect the physical devices that do not have
> IOMMU in the cdev registration as cdev does not support such devices. Per the
> suggestion from Jason, lift the IOMMU_CAP_CACHE_COHERENCY check to be in vfio_main.c
> so that it can fail the registration of such devices if only cdev is compiled. (Jason, Alex)
> - Refine the vfio.rst doc, highlight that the cdev device access is stil bound with
> iommu group. (Alex)
> - Reaffirm t-b from below folks:
> Nicolin Chen - Test nesting branch which is based on cdev v12, the test is done on ARM64 (SMMUv3)
> Matthew Rosato - vfio-pci, vfio-ap, vfio-ccw under container, compat and cdev mode, and nesting
> test on SMMUv3 and Intel.
> Yanting Jiang - regression tests with NIC passthrough on Intel platform
I accendiently put my remarks on v12, but they all apply here, and I
don't have any new remarks for this version.
Thanks,
Jason
next prev parent reply other threads:[~2023-06-23 16:48 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-16 9:39 [Intel-gfx] [PATCH v13 00/22] Add vfio_device cdev for iommufd support Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 01/22] vfio: Allocate per device file structure Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 02/22] vfio: Refine vfio file kAPIs for KVM Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 03/22] vfio: Accept vfio device file in the KVM facing kAPI Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 04/22] kvm/vfio: Prepare for accepting vfio device fd Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 05/22] kvm/vfio: Accept vfio device file from userspace Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 06/22] vfio: Pass struct vfio_device_file * to vfio_device_open/close() Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 07/22] vfio: Block device access via device fd until device is opened Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 08/22] vfio: Add cdev_device_open_cnt to vfio_group Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 09/22] vfio: Make vfio_df_open() single open for device cdev path Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 10/22] vfio-iommufd: Move noiommu compat validation out of vfio_iommufd_bind() Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 11/22] vfio-iommufd: Split bind/attach into two steps Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 12/22] vfio: Record devid in vfio_device_file Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 13/22] vfio-iommufd: Add detach_ioas support for physical VFIO devices Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 14/22] iommufd/device: Add iommufd_access_detach() API Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 15/22] vfio-iommufd: Add detach_ioas support for emulated VFIO devices Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 16/22] vfio: Move vfio_device_group_unregister() to be the first operation in unregister Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 17/22] vfio: Add cdev for vfio_device Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 18/22] vfio: Add VFIO_DEVICE_BIND_IOMMUFD Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 19/22] vfio: Add VFIO_DEVICE_[AT|DE]TACH_IOMMUFD_PT Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 20/22] vfio: Move the IOMMU_CAP_CACHE_COHERENCY check in __vfio_register_dev() Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 21/22] vfio: Compile vfio_group infrastructure optionally Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-07-17 6:36 ` [Intel-gfx] " Liu, Yi L
2023-07-17 6:36 ` Liu, Yi L
2023-07-17 8:08 ` [Intel-gfx] " Liu, Yi L
2023-07-17 8:08 ` Liu, Yi L
2023-07-17 18:45 ` [Intel-gfx] " Alex Williamson
2023-07-17 18:45 ` Alex Williamson
2023-07-18 1:18 ` [Intel-gfx] " Liu, Yi L
2023-07-18 1:18 ` Liu, Yi L
2023-07-17 12:33 ` [Intel-gfx] " Jason Gunthorpe
2023-07-17 12:33 ` Jason Gunthorpe
2023-07-17 12:50 ` [Intel-gfx] " Liu, Yi L
2023-07-17 12:50 ` Liu, Yi L
2023-06-16 9:39 ` [Intel-gfx] [PATCH v13 22/22] docs: vfio: Add vfio device cdev description Yi Liu
2023-06-16 9:39 ` Yi Liu
2023-06-21 21:54 ` [Intel-gfx] " Alex Williamson
2023-06-21 21:54 ` Alex Williamson
2023-06-27 8:54 ` [Intel-gfx] " Liu, Yi L
2023-06-27 8:54 ` Liu, Yi L
2023-06-27 16:12 ` [Intel-gfx] " Jason Gunthorpe
2023-06-27 16:12 ` Jason Gunthorpe
2023-06-27 17:34 ` [Intel-gfx] " Alex Williamson
2023-06-28 1:10 ` Liu, Yi L
2023-06-28 1:10 ` Liu, Yi L
2023-06-28 12:34 ` [Intel-gfx] " Jason Gunthorpe
2023-06-28 12:34 ` Jason Gunthorpe
2023-06-28 0:56 ` [Intel-gfx] " Liu, Yi L
2023-06-28 0:56 ` Liu, Yi L
2023-06-28 12:33 ` [Intel-gfx] " Jason Gunthorpe
2023-06-28 12:33 ` Jason Gunthorpe
2023-06-16 14:03 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Add vfio_device cdev for iommufd support (rev17) Patchwork
2023-06-18 20:55 ` [Intel-gfx] ✗ Fi.CI.BUILD: git am --abort philly j
2023-06-19 3:18 ` Liu, Yi L
2023-06-21 9:17 ` [Intel-gfx] [PATCH v13 00/22] Add vfio_device cdev for iommufd support Duan, Zhenzhong
2023-06-21 9:17 ` Duan, Zhenzhong
2023-06-23 16:48 ` Jason Gunthorpe [this message]
2023-06-23 16:48 ` Jason Gunthorpe
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=ZJXM1Co96do1a+1p@nvidia.com \
--to=jgg@nvidia.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=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.l.liu@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 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.