Message ID | 20241104132732.16759-1-yi.l.liu@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | vfio-pci support pasid attach/detach | expand |
On 2024/11/4 21:27, Yi Liu wrote: > This adds the pasid attach/detach uAPIs for userspace to attach/detach > a PASID of a device to/from a given ioas/hwpt. Only vfio-pci driver is > enabled in this series. After this series, PASID-capable devices bound > with vfio-pci can report PASID capability to userspace and VM to enable > PASID usages like Shared Virtual Addressing (SVA). > > Based on the discussion about reporting the vPASID to VM [1], it's agreed > that we will let the userspace VMM to synthesize the vPASID capability. > The VMM needs to figure out a hole to put the vPASID cap. This includes > the hidden bits handling for some devices. While, it's up to the userspace, > it's not the focus of this series. > > This series first adds the helpers for pasid attach in vfio core and then > extends the device cdev attach/detach ioctls for pasid attach/detach. In the > end of this series, the IOMMU_GET_HW_INFO ioctl is extended to report the > PCI PASID capability to the userspace. Userspace should check this before > using any PASID related uAPIs provided by VFIO, which is the agreement in [2]. > This series depends on the iommufd pasid attach/detach series [3]. > > The completed code can be found at [4], tested with a hacky Qemu branch [5]. > > [1] https://lore.kernel.org/kvm/BN9PR11MB5276318969A212AD0649C7BE8CBE2@BN9PR11MB5276.namprd11.prod.outlook.com/ > [2] https://lore.kernel.org/kvm/4f2daf50-a5ad-4599-ab59-bcfc008688d8@intel.com/ > [3] https://lore.kernel.org/linux-iommu/20240912131255.13305-1-yi.l.liu@intel.com/ correct the latest link. https://lore.kernel.org/linux-iommu/20241104132513.15890-1-yi.l.liu@intel.com/ > [4] https://github.com/yiliu1765/iommufd/tree/iommufd_pasid > [5] https://github.com/yiliu1765/qemu/tree/wip/zhenzhong/iommufd_nesting_rfcv2-test-pasid > > Change log: > > v4: > - Add acked-by for the ida patch from Matthew > - Add r-b from Kevin and Jason on patch 01, 02 and 04 of v3 > - Add common code to copy user data for the user struct with new fields > - Extend the VFIO_DEVICE_[AT|DE]TACH_IOMMUFD_PT to support pasid, patch 03 > is updated per this change. Hence drop r-b of it. (Kevin, Alex) > - Add t-b from Zhangfei for patch 4 of v3 > - Nits from Vasant > > v3: https://lore.kernel.org/linux-iommu/20240912131729.14951-1-yi.l.liu@intel.com/ > - Misc enhancement on patch 01 of v2 (Alex, Jason) > - Add Jason's r-b to patch 03 of v2 > - Drop the logic that report PASID via VFIO_DEVICE_FEATURE ioctl > - Extend IOMMU_GET_HW_INFO to report PASID support (Kevin, Jason, Alex) > > v2: https://lore.kernel.org/kvm/20240412082121.33382-1-yi.l.liu@intel.com/ > - Use IDA to track if PASID is attached or not in VFIO. (Jason) > - Fix the issue of calling pasid_at[de]tach_ioas callback unconditionally (Alex) > - Fix the wrong data copy in vfio_df_ioctl_pasid_detach_pt() (Zhenzhong) > - Minor tweaks in comments (Kevin) > > v1: https://lore.kernel.org/kvm/20231127063909.129153-1-yi.l.liu@intel.com/ > - Report PASID capability via VFIO_DEVICE_FEATURE (Alex) > > rfc: https://lore.kernel.org/linux-iommu/20230926093121.18676-1-yi.l.liu@intel.com/ > > Regards, > Yi Liu > > Yi Liu (4): > ida: Add ida_find_first_range() > vfio-iommufd: Support pasid [at|de]tach for physical VFIO devices > vfio: VFIO_DEVICE_[AT|DE]TACH_IOMMUFD_PT support pasid > iommufd: Extend IOMMU_GET_HW_INFO to report PASID capability > > drivers/iommu/iommufd/device.c | 24 +++++++++++- > drivers/pci/ats.c | 33 ++++++++++++++++ > drivers/vfio/device_cdev.c | 62 +++++++++++++++++++++--------- > drivers/vfio/iommufd.c | 50 ++++++++++++++++++++++++ > drivers/vfio/pci/vfio_pci.c | 2 + > drivers/vfio/vfio.h | 18 +++++++++ > drivers/vfio/vfio_main.c | 55 ++++++++++++++++++++++++++ > include/linux/idr.h | 11 ++++++ > include/linux/pci-ats.h | 3 ++ > include/linux/vfio.h | 11 ++++++ > include/uapi/linux/iommufd.h | 14 ++++++- > include/uapi/linux/vfio.h | 29 +++++++++----- > lib/idr.c | 67 ++++++++++++++++++++++++++++++++ > lib/test_ida.c | 70 ++++++++++++++++++++++++++++++++++ > 14 files changed, 419 insertions(+), 30 deletions(-) >