qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v8 0/6] Add Mediated device support


From: Kirti Wankhede
Subject: [Qemu-devel] [PATCH v8 0/6] Add Mediated device support
Date: Tue, 11 Oct 2016 01:58:31 +0530

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.

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

-- 
2.7.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]