Hi all, This patches series adds basic AMD IOMMU emulation support to Qemu. It's currently in it's 10th version. Changes since V9 include
-amd_iommu prefixes have been renamed to a shorter 'amdvi' both in the macros and in the functions/code. The register macros have not been moved to the implementation file since almost the macros there are basically macros and I reckoned renaming them should suffice. -taken care of byte order in the use of 'dma_memory_read'[Michael] -Taken care of invalid DTE entries which is still subject discussion. I will make any necessary changes based on discusion outcome.[Jan] -An issue with the emulate IOMMU defaulting to AMD_IOMMU has be fixed[Marcel] You can test this patches by starting with parameters qemu-system-x86_64 -M q35,iommu=on,x-iommu-type=amd -m 2G -enable-kvm -smp 4 -cpu host -hda file.img -soundhw ac97 emulating whatever devices you want. Not passing any command line parameters to linux should be enough to test this patches since the devices are basically passes-through but to the 'host' (l1 guest). You can still go ahead pass command line parameter 'iommu=pt iommu=1' and try to pass a device to L2 guest. This can also done without passing any iommu related parameters to the kernel. David Kiarie (4): hw/i386: Introduce AMD IOMMU hw/i386: ACPI IVRS table hw/core: provision for overriding emulated IOMMU hw/pci-host: Emulate AMD IOMMU hw/acpi/aml-build.c | 2 +- hw/core/machine.c | 29 +- hw/i386/Makefile.objs | 1 + hw/i386/acpi-build.c | 93 ++- hw/i386/amd_iommu.c | 1405 +++++++++++++++++++++++++++++++++++++++++ hw/i386/amd_iommu.h | 340 ++++++++++ hw/pci-host/q35.c | 25 +- include/hw/acpi/acpi-defs.h | 13 + include/hw/acpi/aml-build.h | 1 + include/hw/boards.h | 7 + include/hw/i386/intel_iommu.h | 1 + include/hw/pci/pci.h | 2 + qemu-options.hx | 7 +- util/qemu-config.c | 8 +- 14 files changed, 1912 insertions(+), 22 deletions(-) create mode 100644 hw/i386/amd_iommu.c create mode 100644 hw/i386/amd_iommu.h -- 2.1.4