[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH qemu v13 00/16] spapr: vfio: Enable Dynamic DMA wind
From: |
Alexey Kardashevskiy |
Subject: |
[Qemu-devel] [PATCH qemu v13 00/16] spapr: vfio: Enable Dynamic DMA windows (DDW) |
Date: |
Tue, 1 Mar 2016 20:10:25 +1100 |
Each Partitionable Endpoint (IOMMU group) has an address range on a PCI bus
where devices are allowed to do DMA. These ranges are called DMA windows.
By default, there is a single DMA window, 1 or 2GB big, mapped at zero
on a PCI bus.
PAPR defines a DDW RTAS API which allows pseries guests
querying the hypervisor about DDW support and capabilities (page size mask
for now). A pseries guest may request an additional (to the default)
DMA windows using this RTAS API.
The existing pseries Linux guests request an additional window as big as
the guest RAM and map the entire guest window which effectively creates
direct mapping of the guest memory to a PCI bus.
This patchset reworks PPC64 IOMMU code and adds necessary structures
to support big windows on pseries.
This patchset is based on git://github.com/dgibson/qemu.git ,
tag ppc-for-2.6-20160229 plus just recently posted
"Allow EEH on spapr-pci-host-bridge devices" series.
The series was completely reworked so there is no changelog.
Please comment. Thanks!
Alexey Kardashevskiy (16):
memory: Fix IOMMU replay base address
spapr_pci: Move DMA window enablement to a helper
spapr_iommu: Move table allocation to helpers
spapr_iommu: Introduce "enabled" state for TCE table
spapr_iommu: Add root memory region
spapr_pci: Reset DMA config on PHB reset
vfio, memory: Notify IOMMU about starting/stopping being used by VFIO
memory: Add reporting of supported page sizes
vfio: Generalize IOMMU memory listener
vfio: Use different page size for different IOMMU types
vfio: spapr: Add SPAPR IOMMU v2 support (DMA memory preregistering)
vmstate: Define VARRAY with VMS_ALLOC
spapr_iommu: Remove need_vfio flag from sPAPRTCETable
spapr_pci: Add and export DMA resetting helper
vfio: Move iova_pgsizes from container to guest IOMMU
spapr_pci/spapr_pci_vfio: Support Dynamic DMA Windows (DDW)
hw/ppc/Makefile.objs | 1 +
hw/ppc/spapr.c | 7 +-
hw/ppc/spapr_iommu.c | 187 ++++++++++++++++++++------
hw/ppc/spapr_pci.c | 119 +++++++++++++---
hw/ppc/spapr_rtas_ddw.c | 306 ++++++++++++++++++++++++++++++++++++++++++
hw/ppc/spapr_vio.c | 9 +-
hw/vfio/Makefile.objs | 1 +
hw/vfio/common.c | 213 ++++++++++++++++++++++-------
hw/vfio/prereg.c | 138 +++++++++++++++++++
include/exec/memory.h | 13 ++
include/hw/pci-host/spapr.h | 15 +++
include/hw/ppc/spapr.h | 35 +++--
include/hw/vfio/vfio-common.h | 16 ++-
include/migration/vmstate.h | 10 ++
memory.c | 9 ++
trace-events | 10 +-
16 files changed, 960 insertions(+), 129 deletions(-)
create mode 100644 hw/ppc/spapr_rtas_ddw.c
create mode 100644 hw/vfio/prereg.c
--
2.5.0.rc3