mbox series

[v2,0/4] iommufd: Add iommu hardware info reporting

Message ID 20230309075358.571567-1-yi.l.liu@intel.com (mailing list archive)
Headers show
Series iommufd: Add iommu hardware info reporting | expand

Message

Yi Liu March 9, 2023, 7:53 a.m. UTC
iommufd gives userspace the capability to manipulate iommu subsytem.
e.g. DMA map/unmap etc. In the near future, it will support iommu nested
translation. Different platform vendors have different implementation for
the nested translation. So before set up nested translation, userspace
needs to know the hardware iommu information. For example, Intel VT-d
supports using guest I/O page table as the stage-1 translation table. This
requires guest I/O page table be compatible with hardware IOMMU.

This series reports the iommu hardware information for a given iommufd_device
which has been bound to iommufd. It is preparation work for userspace to
allocate hwpt for given device. Like the nested translation support[1].

This series introduces an iommu op to report the iommu hardware info,
and an ioctl IOMMU_DEVICE_GET_HW_INFO is added to report such hardware
info to user. enum iommu_hw_info_type is defined to differentiate the
iommu hardware info reported to user hence user can decode them. This
series only adds the framework for iommu hw info reporting, the complete
reporting path needs vendor specific definition and driver support. The
full picture is available in [1] as well.

base-commit: 4c7e97cb6e65eab02991f60a5cc7a4fed5498c7a

[1] https://github.com/yiliu1765/iommufd/tree/iommufd_nesting

Change log:

v2:
 - Drop patch 05 of v1 as it is already covered by other series
 - Rename the capability info to be iommu hardware info

v1: https://lore.kernel.org/linux-iommu/20230209041642.9346-1-yi.l.liu@intel.com/

Regards,
	Yi Liu

Lu Baolu (1):
  iommu: Add new iommu op to get iommu hardware information

Nicolin Chen (1):
  iommufd/selftest: Add coverage for IOMMU_DEVICE_GET_HW_INFO ioctl

Yi Liu (2):
  iommu: Move dev_iommu_ops() to private header
  iommufd: Add IOMMU_DEVICE_GET_HW_INFO

 drivers/iommu/iommu-priv.h                    | 11 +++
 drivers/iommu/iommu.c                         |  2 +
 drivers/iommu/iommufd/device.c                | 75 +++++++++++++++++++
 drivers/iommu/iommufd/iommufd_private.h       |  1 +
 drivers/iommu/iommufd/iommufd_test.h          | 15 ++++
 drivers/iommu/iommufd/main.c                  |  3 +
 drivers/iommu/iommufd/selftest.c              | 16 ++++
 include/linux/iommu.h                         | 24 +++---
 include/uapi/linux/iommufd.h                  | 47 ++++++++++++
 tools/testing/selftests/iommu/iommufd.c       | 17 ++++-
 tools/testing/selftests/iommu/iommufd_utils.h | 26 +++++++
 11 files changed, 225 insertions(+), 12 deletions(-)

Comments

Jason Gunthorpe March 20, 2023, 12:43 p.m. UTC | #1
On Wed, Mar 08, 2023 at 11:53:54PM -0800, Yi Liu wrote:
> iommufd gives userspace the capability to manipulate iommu subsytem.
> e.g. DMA map/unmap etc. In the near future, it will support iommu nested
> translation. Different platform vendors have different implementation for
> the nested translation. So before set up nested translation, userspace
> needs to know the hardware iommu information. For example, Intel VT-d
> supports using guest I/O page table as the stage-1 translation table. This
> requires guest I/O page table be compatible with hardware IOMMU.
> 
> This series reports the iommu hardware information for a given iommufd_device
> which has been bound to iommufd. It is preparation work for userspace to
> allocate hwpt for given device. Like the nested translation support[1].
> 
> This series introduces an iommu op to report the iommu hardware info,
> and an ioctl IOMMU_DEVICE_GET_HW_INFO is added to report such hardware
> info to user. enum iommu_hw_info_type is defined to differentiate the
> iommu hardware info reported to user hence user can decode them. This
> series only adds the framework for iommu hw info reporting, the complete
> reporting path needs vendor specific definition and driver support. The
> full picture is available in [1] as well.

Other than the small notes this looks pretty good to me

Jason