qemu-devel
[Top][All Lists]
Advanced

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

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


From: Jike Song
Subject: Re: [Qemu-devel] [PATCH v8 0/6] Add Mediated device support
Date: Tue, 11 Oct 2016 10:23:22 +0800
User-agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8

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
> 



reply via email to

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