From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40877) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1azk6j-0001VH-Nh for qemu-devel@nongnu.org; Mon, 09 May 2016 08:16:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1azk6e-0006AW-LQ for qemu-devel@nongnu.org; Mon, 09 May 2016 08:16:17 -0400 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:38826) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1azk6e-0006AK-FH for qemu-devel@nongnu.org; Mon, 09 May 2016 08:16:12 -0400 Received: by mail-wm0-x232.google.com with SMTP id g17so183357525wme.1 for ; Mon, 09 May 2016 05:16:12 -0700 (PDT) From: David Kiarie Date: Mon, 9 May 2016 15:15:58 +0300 Message-Id: <1462796162-13375-1-git-send-email-davidkiarie4@gmail.com> Subject: [Qemu-devel] [V10 0/4] AMD IOMMU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: jan.kiszka@web.de, valentine.sinitsyn@gmail.com, peterx@redhat.com, marcel@redhat.com, mst@redhat.com, David Kiarie 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