memory/iommu: QOM'fy IOMMU MemoryRegion
This defines new QOM object - IOMMUMemoryRegion - with MemoryRegion as a parent. This moves IOMMU-related fields from MR to IOMMU MR. However to avoid dymanic QOM casting in fast path (address_space_translate, etc), this adds an @is_iommu boolean flag to MR and provides new helper to do simple cast to IOMMU MR - memory_region_get_iommu. The flag is set in the instance init callback. This defines memory_region_is_iommu as memory_region_get_iommu()!=NULL. This switches MemoryRegion to IOMMUMemoryRegion in most places except the ones where MemoryRegion may be an alias. Signed-off-by:Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by:
David Gibson <david@gibson.dropbear.id.au> Message-Id: <20170711035620.4232-2-aik@ozlabs.ru> Acked-by:
Cornelia Huck <cohuck@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
Showing
- exec.c 6 additions, 6 deletionsexec.c
- hw/alpha/typhoon.c 5 additions, 3 deletionshw/alpha/typhoon.c
- hw/dma/rc4030.c 4 additions, 4 deletionshw/dma/rc4030.c
- hw/i386/amd_iommu.c 5 additions, 4 deletionshw/i386/amd_iommu.c
- hw/i386/intel_iommu.c 9 additions, 8 deletionshw/i386/intel_iommu.c
- hw/mips/mips_jazz.c 1 addition, 1 deletionhw/mips/mips_jazz.c
- hw/pci-host/apb.c 3 additions, 3 deletionshw/pci-host/apb.c
- hw/ppc/spapr_iommu.c 9 additions, 7 deletionshw/ppc/spapr_iommu.c
- hw/s390x/s390-pci-bus.c 3 additions, 3 deletionshw/s390x/s390-pci-bus.c
- hw/s390x/s390-pci-bus.h 1 addition, 1 deletionhw/s390x/s390-pci-bus.h
- hw/s390x/s390-pci-inst.c 4 additions, 4 deletionshw/s390x/s390-pci-inst.c
- hw/vfio/common.c 7 additions, 5 deletionshw/vfio/common.c
- hw/vfio/spapr.c 2 additions, 1 deletionhw/vfio/spapr.c
- include/exec/memory.h 35 additions, 20 deletionsinclude/exec/memory.h
- include/hw/i386/intel_iommu.h 1 addition, 1 deletioninclude/hw/i386/intel_iommu.h
- include/hw/mips/mips.h 1 addition, 1 deletioninclude/hw/mips/mips.h
- include/hw/ppc/spapr.h 2 additions, 1 deletioninclude/hw/ppc/spapr.h
- include/hw/vfio/vfio-common.h 1 addition, 1 deletioninclude/hw/vfio/vfio-common.h
- include/qemu/typedefs.h 1 addition, 0 deletionsinclude/qemu/typedefs.h
- memory.c 70 additions, 35 deletionsmemory.c
Loading
Please register or sign in to comment