Re: [PATCH v10 00/19] Add Mediated device support

From: Jike Song
Date: Tue Nov 01 2016 - 04:36:15 EST


On 10/27/2016 05:29 AM, Kirti Wankhede wrote:
> This series adds Mediated device support to 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 creates and manages mediated devices, VFIO based
> driver for mediated devices that are created by mdev core module and
> update VFIO type1 IOMMU module to support pinning & unpinning for mediated
> devices.
>
> What changed in v10?
> vfio:
> - Split commits in multple individual commits.
> - Removed the function added in v9 to get device_api string.
> - Defined constant strings in include/uapi/linux/vfio.h that should be used by
> vendor driver for device_api attribute.
>
> vfio_iommu_type1:
> - Fixed accounting when pass through device is unplugged while mdev device
> exist in a domain.
> - Added blocking notifier to notify DMA_UNMAP to vendor driver to invalidate
> mappings.
> - Exported APIs to register notifier for DMA_UNMAP action.
>
> Documentation:
> - Added sysfs ABI for mediated device framework.
> - Updated Documentation/vfio-mdev/vfio-mediated-device.txt.
> - Updated mtty.c with bug fixes.
>
> Kirti Wankhede (19):
> vfio: Mediated device Core driver
> vfio: VFIO based driver for Mediated devices
> vfio: Rearrange functions to get vfio_group from dev
> vfio: Common function to increment container_users
> vfio iommu: Added pin and unpin callback functions to
> vfio_iommu_driver_ops
> vfio iommu type1: Update arguments of vfio_lock_acct
> vfio iommu type1: Update argument of vaddr_get_pfn()
> vfio iommu type1: Add find_iommu_group() function
> vfio iommu type1: Add support for mediated devices
> vfio iommu: Add blocking notifier to notify DMA_UNMAP
> vfio: Introduce common function to add capabilities
> vfio_pci: Update vfio_pci to use vfio_info_add_capability()
> vfio: Introduce vfio_set_irqs_validate_and_prepare()
> vfio_pci: Updated to use vfio_set_irqs_validate_and_prepare()
> vfio_platform: Updated to use vfio_set_irqs_validate_and_prepare()
> vfio: Define device_api strings
> docs: Add Documentation for Mediated devices
> docs: Sysfs ABI for mediated device framework
> docs: Sample driver to demonstrate how to use Mediated device
> framework.
>
> Documentation/ABI/testing/sysfs-bus-vfio-mdev | 111 ++
> Documentation/vfio-mdev/Makefile | 13 +
> Documentation/vfio-mdev/mtty.c | 1503 ++++++++++++++++++++++
> Documentation/vfio-mdev/vfio-mediated-device.txt | 398 ++++++
> drivers/vfio/Kconfig | 1 +
> drivers/vfio/Makefile | 1 +
> drivers/vfio/mdev/Kconfig | 17 +
> drivers/vfio/mdev/Makefile | 5 +
> drivers/vfio/mdev/mdev_core.c | 384 ++++++
> drivers/vfio/mdev/mdev_driver.c | 122 ++
> drivers/vfio/mdev/mdev_private.h | 41 +
> drivers/vfio/mdev/mdev_sysfs.c | 286 ++++
> drivers/vfio/mdev/vfio_mdev.c | 148 +++
> drivers/vfio/pci/vfio_pci.c | 78 +-
> drivers/vfio/platform/vfio_platform_common.c | 31 +-
> drivers/vfio/vfio.c | 322 ++++-
> drivers/vfio/vfio_iommu_type1.c | 808 ++++++++++--
> include/linux/mdev.h | 167 +++
> include/linux/vfio.h | 30 +-
> include/uapi/linux/vfio.h | 10 +
> 20 files changed, 4270 insertions(+), 206 deletions(-)
> create mode 100644 Documentation/ABI/testing/sysfs-bus-vfio-mdev
> create mode 100644 Documentation/vfio-mdev/Makefile
> create mode 100644 Documentation/vfio-mdev/mtty.c
> create mode 100644 Documentation/vfio-mdev/vfio-mediated-device.txt
> 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_mdev.c
> create mode 100644 include/linux/mdev.h

A side note:

I rebased KVMGT upon v10, with 2 minor changes:

1, get_user_pages_remote has only 7 args
2, vfio iommu notifier calls vendor callback with iova instead of pfn

so far it works pretty well. Thanks!

--
Thanks,
Jike