summaryrefslogtreecommitdiffstats
path: root/include/hw/pci-host
diff options
context:
space:
mode:
authorLe Tan2014-08-16 07:55:40 +0200
committerMichael S. Tsirkin2014-08-28 23:10:22 +0200
commita52a7fdfa7512c9d095f2d5797c3c423dec43dbc (patch)
tree3cbf148321f74ed3e8146dffa60111b06f543c22 /include/hw/pci-host
parentintel-iommu: add DMAR table to ACPI tables (diff)
downloadqemu-a52a7fdfa7512c9d095f2d5797c3c423dec43dbc.tar.gz
qemu-a52a7fdfa7512c9d095f2d5797c3c423dec43dbc.tar.xz
qemu-a52a7fdfa7512c9d095f2d5797c3c423dec43dbc.zip
intel-iommu: add Intel IOMMU emulation to q35 and add a machine option "iommu" as a switch
Add Intel IOMMU emulation to q35 chipset and expose it to the guest. 1. Add a machine option. Users can use "-machine iommu=on|off" in the command line to enable/disable Intel IOMMU. The default is off. 2. Accroding to the machine option, q35 will initialize the Intel IOMMU and use pci_setup_iommu() to setup q35_host_dma_iommu() as the IOMMU function for the pci bus. 3. q35_host_dma_iommu() will return different address space according to the bus_num and devfn of the device. Signed-off-by: Le Tan <tamlokveer@gmail.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'include/hw/pci-host')
-rw-r--r--include/hw/pci-host/q35.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/hw/pci-host/q35.h b/include/hw/pci-host/q35.h
index d9ee97845b..025d6e69af 100644
--- a/include/hw/pci-host/q35.h
+++ b/include/hw/pci-host/q35.h
@@ -33,6 +33,7 @@
#include "hw/acpi/acpi.h"
#include "hw/acpi/ich9.h"
#include "hw/pci-host/pam.h"
+#include "hw/i386/intel_iommu.h"
#define TYPE_Q35_HOST_DEVICE "q35-pcihost"
#define Q35_HOST_DEVICE(obj) \
@@ -60,6 +61,7 @@ typedef struct MCHPCIState {
uint64_t pci_hole64_size;
PcGuestInfo *guest_info;
uint32_t short_root_bus;
+ IntelIOMMUState *iommu;
} MCHPCIState;
typedef struct Q35PCIHost {