qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework


From: Michael S. Tsirkin
Subject: Re: [Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework for virt-SVA
Date: Thu, 1 Mar 2018 15:32:22 +0200

On Thu, Mar 01, 2018 at 06:31:50PM +0800, Liu, Yi L wrote:
> This patchset is to introduce a notifier framework for virt-SVA.
> You may find virt-SVA design details from the link below.
> 
> https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg04925.html
> 
> SVA is short for Shared Virtual Addressing. This is also called Shared
> Virtual Memory in previous patchsets. However, SVM is confusing as it
> can also be short for Secure Virtual Machine. So this patchset use
> Shared Virtual Addressing instead of Shared Virtual Memory. And it
> would be applied in future (SVA)related patch series as well.

Just as a matter of naming, it might be a good idea to just call
this feature "PASID support". QEMU only cares about the mechanism,
now about how applications use it.


> Qemu has an existing notifier framework based on MemoryRegion, which
> are used for MAP/UNMAP. However, it is not well suited for virt-SVA.
> Reasons are as below:
> - virt-SVA works along with PT = 1
> - if PT = 1 IOMMU MR are disabled so MR notifier are not registered
> - new notifiers do not fit nicely in this framework as they need to be
>   registered even if PT = 1
> - need a new framework to attach the new notifiers
> - Additional background can be got from:
>   https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg04931.html
> 
> So a new iommu notifier framework is needed. This patchset introduces
> a notifier framework based on IOMMUSVAContext. IOMMUSVAContext is
> introduced to be an abstract of virt-SVA operations in Qemu.
> 
> Patch Overview:
> * 1 - 2: rename existing naming, the IOMMU MemoryRegion Notifier
>          framework
> * 3 - 4: introduce SVA notifier framework based on IOMMUSVAContext
> * 5 - 7: introduce PCISVAOps and expose the SVA notfier framework
>          through hw/pci layer
> * 8 - 12: show the usage of SVA notifier in Intel vIOMMU emulator
> 
> [v2->v3 changes]
> * Rephrase the cover letter
> * Follow David's suggestion, take emulated SVA capable device
>   into consideration
> * renaming IOMMUObject to be IOMMUSVAContext
> * Expose SVA nofitier registeration through hw/pci layer
> * rename the file hw/core/iommu.c to be hw/core/pasid.c
>          include/hw/core/iommu.h to be include/hw/core/pasid.h
> * use SVA instead of SVM in patchset
> * rename patchset title, previous is "Introduce new iommu notifier framework"
> 
> v2 link:
> https://lists.gnu.org/archive/html/qemu-devel/2017-11/msg04553.html
> 
> [v1->v2 changes]
> * Rephrase the cover letter
> * Re-sort the sequence of the patches
> * Split the patch to introduce IOMMUObject and AddressSpaceOps
> * Address two missed list init spotted by Auger Eric
> 
> v1 link:
> http://qemu-devel.nongnu.narkive.com/XhqBQ8wc/resend-patch-0-6-introduce-new-iommu-notifier-framework
> 
> Original patchset from Peter Xu can be found in the link below.
> 
> https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg05360.html
> 
> Comments and suggestions are always welcomed, thanks.
> 
> Liu, Yi L (10):
>   vfio: rename GuestIOMMU to be GuestIOMMUMR
>   vfio/pci: add notify framework based on IOMMUSVAContext
>   hw/pci: introduce PCISVAOps to PCIDevice
>   vfio/pci: provide vfio_pci_sva_ops instance
>   vfio/pci: register sva notifier
>   hw/pci: introduce pci_device_notify_iommu()
>   intel_iommu: record assigned devices in a list
>   intel_iommu: bind guest pasid table to host
>   intel_iommu: add framework for PASID AddressSpace management
>   intel_iommu: bind device to PASID tagged AddressSpace
> 
> Peter Xu (2):
>   memory: rename existing iommu notifier to be iommu mr notifier
>   hw/core: introduce IOMMUSVAContext for virt-SVA
> 
>  hw/alpha/typhoon.c             |   2 +-
>  hw/core/Makefile.objs          |   1 +
>  hw/core/pasid.c                |  64 ++++++++++
>  hw/hppa/dino.c                 |   2 +-
>  hw/i386/amd_iommu.c            |   8 +-
>  hw/i386/intel_iommu.c          | 272 
> +++++++++++++++++++++++++++++++++++++----
>  hw/i386/intel_iommu_internal.h |  10 ++
>  hw/pci-host/ppce500.c          |   2 +-
>  hw/pci-host/prep.c             |   2 +-
>  hw/pci-host/sabre.c            |   2 +-
>  hw/pci/pci.c                   |  85 ++++++++++++-
>  hw/ppc/spapr_iommu.c           |   8 +-
>  hw/ppc/spapr_pci.c             |   2 +-
>  hw/s390x/s390-pci-bus.c        |   6 +-
>  hw/vfio/common.c               |  28 +++--
>  hw/vfio/pci.c                  |  84 +++++++++++++
>  hw/virtio/vhost.c              |  10 +-
>  include/exec/memory.h          |  55 +++++----
>  include/hw/core/pasid.h        | 110 +++++++++++++++++
>  include/hw/i386/intel_iommu.h  |  43 ++++++-
>  include/hw/pci/pci.h           |  33 ++++-
>  include/hw/pci/pci_bus.h       |   1 +
>  include/hw/vfio/vfio-common.h  |  19 ++-
>  include/hw/virtio/vhost.h      |   4 +-
>  memory.c                       |  37 +++---
>  25 files changed, 774 insertions(+), 116 deletions(-)
>  create mode 100644 hw/core/pasid.c
>  create mode 100644 include/hw/core/pasid.h
> 
> -- 
> 1.9.1



reply via email to

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