Message ID | 1519900322-30263-1-git-send-email-yi.l.liu@linux.intel.com |
---|---|
Headers | show |
Series | Introduce new iommu notifier framework for virt-SVA | expand |
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
On Thu, Mar 01, 2018 at 03:32:22PM +0200, Michael S. Tsirkin wrote: > 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. Thanks for the idea. Will apply it in the next version. Regards, Yi Liu