[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 0/8] IOMMU: introduce common IOMMUObject
From: |
Peter Xu |
Subject: |
[Qemu-devel] [RFC PATCH 0/8] IOMMU: introduce common IOMMUObject |
Date: |
Thu, 27 Apr 2017 17:34:12 +0800 |
>From time to time, I was always thinking whether we should have a
IOMMU object in common, not depending on platform (x86/ppc/...), or
bus (PCI/...). Virt-svm is a case that may use it now - it needs to
register some notifiers so that when some event triggered the callback
can be invoked. However current MemoryRegion IOMMU notifiers do not
suite well with that purpose, since the notifiers are mostly binded to
memory regions and tailored to IOTLB notifications, while for virt-svm
it should be listening to one IOMMU device, rather than a specific
memory region.
This series tried to do several things:
- renaming old "iommu notifiers" into "iotlb notifiers", to avoid
confusion of what it is used for
- introduce a way to fetch an IOMMU object from a device DMA address
space (for x86, it should be a pci device)
- introduce a common IOMMU object, along with a similar notifier
mechanism for it
There is a use-case example in the last patch to show how to use it,
on how to modify customized IOMMU device to have such a common object,
and on how to use the notifiers (merely the same as old one).
If with luck, this series can be a pre-requisite for the following
patchset:
[RFC PATCH 00/20] Qemu: Extend intel_iommu emulator to support
Shared Virtual Memory
But before that, looking forward to any of your comments.
Test done: compile test only.
Please kindly review. Thanks.
Peter Xu (8):
memory: rename IOMMU_NOTIFIER_*
memory: rename IOMMUNotifier
memory: rename iommu_notifier_init()
memory: rename *_notify_iommu*
memory: rename *iommu_notifier*
memory: introduce AddressSpaceOps
intel_iommu: provide AddressSpaceOps.iommu_get()
iommu: introduce hw/core/iommu
hw/core/Makefile.objs | 1 +
hw/core/iommu.c | 61 +++++++++++++++++++++++++++++
hw/i386/amd_iommu.c | 6 +--
hw/i386/intel_iommu.c | 47 +++++++++++++---------
hw/ppc/spapr_iommu.c | 10 ++---
hw/s390x/s390-pci-inst.c | 2 +-
hw/vfio/common.c | 16 ++++----
hw/virtio/vhost.c | 14 +++----
include/exec/memory.h | 91 +++++++++++++++++++++++++++----------------
include/hw/core/iommu.h | 72 ++++++++++++++++++++++++++++++++++
include/hw/i386/intel_iommu.h | 10 +++--
include/hw/vfio/vfio-common.h | 2 +-
include/hw/virtio/vhost.h | 4 +-
memory.c | 54 ++++++++++++++-----------
14 files changed, 283 insertions(+), 107 deletions(-)
create mode 100644 hw/core/iommu.c
create mode 100644 include/hw/core/iommu.h
--
2.7.4
- [Qemu-devel] [RFC PATCH 0/8] IOMMU: introduce common IOMMUObject,
Peter Xu <=
- [Qemu-devel] [RFC PATCH 1/8] memory: rename IOMMU_NOTIFIER_*, Peter Xu, 2017/04/27
- [Qemu-devel] [RFC PATCH 2/8] memory: rename IOMMUNotifier, Peter Xu, 2017/04/27
- [Qemu-devel] [RFC PATCH 3/8] memory: rename iommu_notifier_init(), Peter Xu, 2017/04/27
- [Qemu-devel] [RFC PATCH 4/8] memory: rename *_notify_iommu*, Peter Xu, 2017/04/27
- [Qemu-devel] [RFC PATCH 6/8] memory: introduce AddressSpaceOps, Peter Xu, 2017/04/27
- [Qemu-devel] [RFC PATCH 5/8] memory: rename *iommu_notifier*, Peter Xu, 2017/04/27
- [Qemu-devel] [RFC PATCH 7/8] intel_iommu: provide AddressSpaceOps.iommu_get(), Peter Xu, 2017/04/27
- [Qemu-devel] [RFC PATCH 8/8] iommu: introduce hw/core/iommu, Peter Xu, 2017/04/27