This series adds Mediated device support to v4.6 Linux host kernel. Purpose of this series is to provide a common interface for mediated device management that can be used by different devices. This series introduces Mdev core module that create and manage mediated devices, VFIO based driver for mediated PCI devices that are created by Mdev core module and update VFIO type1 IOMMU module to support mediated devices.
What's new in v5? - Improved mdev_put_device() and mdev_get_device() for mediated devices and locking for per mdev_device registration callbacks. What's left to do? - Issues with mmap region fault handler, EPT is not correctly populated with the information provided by remap_pfn_range() inside fault handler. - mmap invalidation mechanism will be added once above issue gets resolved. Tested: - Single vGPU VM - Multiple vGPU VMs on same GPU Thanks, Kirti Kirti Wankhede (3): Mediated device Core driver VFIO driver for mediated PCI device VFIO Type1 IOMMU: Add support for mediated devices drivers/vfio/Kconfig | 1 + drivers/vfio/Makefile | 1 + drivers/vfio/mdev/Kconfig | 18 + drivers/vfio/mdev/Makefile | 6 + drivers/vfio/mdev/mdev_core.c | 595 ++++++++++++++++++++++++++++++++ drivers/vfio/mdev/mdev_driver.c | 138 ++++++++ drivers/vfio/mdev/mdev_private.h | 33 ++ drivers/vfio/mdev/mdev_sysfs.c | 300 +++++++++++++++++ drivers/vfio/mdev/vfio_mpci.c | 654 ++++++++++++++++++++++++++++++++++++ drivers/vfio/pci/vfio_pci_private.h | 6 - drivers/vfio/pci/vfio_pci_rdwr.c | 1 + drivers/vfio/vfio_iommu_type1.c | 444 ++++++++++++++++++++++-- include/linux/mdev.h | 232 +++++++++++++ include/linux/vfio.h | 13 + 14 files changed, 2404 insertions(+), 38 deletions(-) create mode 100644 drivers/vfio/mdev/Kconfig create mode 100644 drivers/vfio/mdev/Makefile create mode 100644 drivers/vfio/mdev/mdev_core.c create mode 100644 drivers/vfio/mdev/mdev_driver.c create mode 100644 drivers/vfio/mdev/mdev_private.h create mode 100644 drivers/vfio/mdev/mdev_sysfs.c create mode 100644 drivers/vfio/mdev/vfio_mpci.c create mode 100644 include/linux/mdev.h -- 2.7.0