[Intel-gfx] [PATCH 00/10] Connect VFIO to IOMMUFD

Jason Gunthorpe
2022-10-25T18:18:04Z

This series provides an alternative container layer for VFIO implemented
using iommufd. This is optional, if CONFIG_IOMMUFD is not set then it will
not be compiled in.

At this point iommufd can be injected by passing in a iommfd FD to
VFIO_GROUP_SET_CONTAINER which will use the VFIO compat layer in iommufd
to obtain the compat IOAS and then connect up all the VFIO drivers as
appropriate.

This is temporary stopping point, a following series will provide a way to
directly open a VFIO device FD and directly connect it to IOMMUFD using
native ioctls that can expose the IOMMUFD features like hwpt, future
vPASID and dynamic attachment.

This series, in compat mode, has passed all the qemu tests we have
available, including the test suites for the Intel GVT mdev. Aside from
the temporary limitation with P2P memory this is belived to be fully
compatible with VFIO.

This is on github: https://github.com/jgunthorpe/linux/commits/vfio_iommufd

It requires the iommufd series:

https://lore.kernel.org/r/0-v3-402a7d6459de+24b-iommufd_jgg@nvidia.com

Jason Gunthorpe (10):
vfio: Move vfio_device driver open/close code to a function
vfio: Move vfio_device_assign_container() into
vfio_device_first_open()
vfio: Rename vfio_device_assign/unassign_container()
vfio: Move storage of allow_unsafe_interrupts to vfio_main.c
vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for
vfio_file_enforced_coherent()
vfio-iommufd: Allow iommufd to be used in place of a container fd
vfio-iommufd: Support iommufd for physical VFIO devices
vfio-iommufd: Support iommufd for emulated VFIO devices
vfio: Make vfio_container optionally compiled
iommufd: Allow iommufd to supply /dev/vfio/vfio

drivers/gpu/drm/i915/gvt/kvmgt.c | 3 +
drivers/iommu/iommufd/Kconfig | 12 +
drivers/iommu/iommufd/main.c | 35 +-
drivers/s390/cio/vfio_ccw_ops.c | 3 +
drivers/s390/crypto/vfio_ap_ops.c | 3 +
drivers/vfio/Kconfig | 38 ++-
drivers/vfio/Makefile | 5 +-
drivers/vfio/container.c | 136 ++------
drivers/vfio/fsl-mc/vfio_fsl_mc.c | 3 +
drivers/vfio/iommufd.c | 161 +++++++++
.../vfio/pci/hisilicon/hisi_acc_vfio_pci.c | 6 +
drivers/vfio/pci/mlx5/main.c | 3 +
drivers/vfio/pci/vfio_pci.c | 3 +
drivers/vfio/platform/vfio_amba.c | 3 +
drivers/vfio/platform/vfio_platform.c | 3 +
drivers/vfio/vfio.h | 100 +++++-
drivers/vfio/vfio_iommu_type1.c | 5 +-
drivers/vfio/vfio_main.c | 318 ++++++++++++++----
include/linux/vfio.h | 39 +++
19 files changed, 681 insertions(+), 198 deletions(-)
create mode 100644 drivers/vfio/iommufd.c

base-commit: 3bec937e94942a6aee8854be1c1f5cc2b92d15e2
--
2.38.0