[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework for
From: |
Liu, Yi L |
Subject: |
[Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework for virt-SVA |
Date: |
Thu, 1 Mar 2018 18:33:23 +0800 |
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.
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
- [Qemu-devel] [PATCH v3 01/12] memory: rename existing iommu notifier to be iommu mr notifier, (continued)
- [Qemu-devel] [PATCH v3 01/12] memory: rename existing iommu notifier to be iommu mr notifier, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 06/12] vfio/pci: provide vfio_pci_sva_ops instance, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 07/12] vfio/pci: register sva notifier, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 09/12] intel_iommu: record assigned devices in a list, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 10/12] intel_iommu: bind guest pasid table to host, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 11/12] intel_iommu: add framework for PASID AddressSpace management, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 08/12] hw/pci: introduce pci_device_notify_iommu(), Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 12/12] intel_iommu: bind device to PASID tagged AddressSpace, Liu, Yi L, 2018/03/01
- Re: [Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework for virt-SVA, Michael S. Tsirkin, 2018/03/01
- [Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework for virt-SVA,
Liu, Yi L <=
- [Qemu-devel] [PATCH v3 03/12] hw/core: introduce IOMMUSVAContext for virt-SVA, Liu, Yi L, 2018/03/01
- Re: [Qemu-devel] [PATCH v3 03/12] hw/core: introduce IOMMUSVAContext for virt-SVA, Liu, Yi L, 2018/03/06
- [Qemu-devel] [PATCH v3 04/12] vfio/pci: add notify framework based on IOMMUSVAContext, Liu, Yi L, 2018/03/01