On 10/11/2016 04:28 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. > > This change uses uuid_le_to_bin() to parse UUID string and convert to bin. > This requires following commits from linux master branch: > * commit bc9dc9d5eec908806f1b15c9ec2253d44dcf7835 : > lib/uuid.c: use correct offset in uuid parser > * commit 2b1b0d66704a8cafe83be7114ec4c15ab3a314ad : > lib/uuid.c: introduce a few more generic helpers > > Requires below commits from linux master branch for mmap region fault > handler that uses remap_pfn_range() to setup EPT properly. > * commit add6a0cd1c5ba51b201e1361b05a5df817083618 > KVM: MMU: try to fix up page faults before giving up > * commit 92176a8ede577d0ff78ab3298e06701f67ad5f51 : > KVM: MMU: prepare to support mapping of VM_IO and VM_PFNMAP frames > > What changed in v8? > mdev-core: > - Removed start/stop or online/offline interfaces. > - Added open() and close() interfaces that should be used to commit > resources for mdev devices from vendor driver. > - Removed supported_config callback function. Introduced sysfs interface > for 'mdev_supported_types' as discussed earlier. It is mandatory to > provide supported types by vendor driver. > - Removed 'mdev_create' and 'mdev_destroy' sysfs files from device's > directory. Added 'create' file in each supported type group that vendor > driver would define. Added 'remove' file in mdev device directory to > destroy mdev device. > > vfio_mdev: > - Added ioctl() callback. All ioctls should be handled in vendor driver > - Common functions for SET_IRQS and GET_REGION_INFO ioctls are added to > reduce code duplication in vendor drivers. > - This forms a shim layer that pass through VFIO devices operations to > vendor driver for mediated devices. Hi Kirti, While having not looked yet at the v8 details, I would say that this is definitely the right way to go, as I have been proposing for a quite long while :) -- Thanks, Jike > > vfio_iommu_type1: > - Handled the case if all devices attached to the normal IOMMU API domain > go away and mdev device still exist in domain. Updated page accounting > for local domain. > - Similarly if device is attached to normal IOMMU API domain, mappings are > establised and page accounting is updated accordingly. > - Tested hot-plug and hot-unplug of vGPU and GPU pass through device with > Linux VM. > > Documentation: > - Updated vfio-mediated-device.txt with current interface. > - Added sample driver that simulates serial port over PCI card for a VM. > This driver is added as an example for how to use mediated device > framework. > - Moved updated document and example driver to 'vfio-mdev' directory in > Documentation. > > > Kirti Wankhede (6): > vfio: Mediated device Core driver > vfio: VFIO based driver for Mediated devices > vfio iommu: Add support for mediated devices > docs: Add Documentation for Mediated devices > Add simple sample driver for mediated device framework > Add common functions for SET_IRQS and GET_REGION_INFO ioctls > > Documentation/vfio-mdev/Makefile | 14 + > Documentation/vfio-mdev/mtty.c | 1353 ++++++++++++++++++++++ > Documentation/vfio-mdev/vfio-mediated-device.txt | 282 +++++ > drivers/vfio/Kconfig | 1 + > drivers/vfio/Makefile | 1 + > drivers/vfio/mdev/Kconfig | 18 + > drivers/vfio/mdev/Makefile | 6 + > drivers/vfio/mdev/mdev_core.c | 363 ++++++ > drivers/vfio/mdev/mdev_driver.c | 131 +++ > drivers/vfio/mdev/mdev_private.h | 41 + > drivers/vfio/mdev/mdev_sysfs.c | 295 +++++ > drivers/vfio/mdev/vfio_mdev.c | 171 +++ > drivers/vfio/pci/vfio_pci.c | 103 +- > drivers/vfio/pci/vfio_pci_private.h | 6 +- > drivers/vfio/vfio.c | 233 ++++ > drivers/vfio/vfio_iommu_type1.c | 685 +++++++++-- > include/linux/mdev.h | 178 +++ > include/linux/vfio.h | 20 +- > 18 files changed, 3743 insertions(+), 158 deletions(-) > 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 > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html