qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC] AMD IOMMU: emulate multiple devices


From: David Kiarie
Subject: [Qemu-devel] [RFC] AMD IOMMU: emulate multiple devices
Date: Sun, 5 Jun 2016 19:54:32 +0300

Hello all,

This patch tries to solve a problem whereby real AMD IOMMUs exhibit both PCI 
and Platform device properties. AMD IOMMU properties that conflict with 
conventional PCI devices' features include the fact that its not a BusMaster 
device, reserves MMIO region without a BAR register.

There is some already ongoing work on Intel IOMMU Interrupt remapping with 
implements an IOMMU base class, as a platform device(which means the moment I 
inherit from this class my device loses it's PCI properties). I am therefore 
forced to find a way to combine both PCI and platform features(which I had 
previously avoided) into AMD IOMMU. 

This patch implements a dummy PCI device which serves to 'steal' PCI config 
space while the rest of the device remains a platform device. The platform 
device maintains a reference to the PCI and hence the relevant PCI config 
space. Please ignore details in this patch and review the design. Also, some of 
the changes here are not related to the above issue.

Looking forward to your comments!

David Kiarie (1):
  Allow AMD IOMMU to have both SysBusDevice and PCIDevice properties.

 hw/acpi/aml-build.c         |    2 +-
 hw/i386/amd_iommu.c         | 1471 +++++++++++++++++++++++++++++++++++++++++++
 hw/i386/amd_iommu.h         |  348 ++++++++++
 hw/i386/kvm/pci-assign.c    |    2 +-
 hw/i386/pc_q35.c            |    1 +
 include/hw/acpi/acpi-defs.h |   13 +
 include/hw/acpi/aml-build.h |    1 +
 include/hw/pci/pci.h        |   10 +-
 qemu-options.hx             |    7 +-
 util/qemu-config.c          |    8 +-
 10 files changed, 1853 insertions(+), 10 deletions(-)
 create mode 100644 hw/i386/amd_iommu.c
 create mode 100644 hw/i386/amd_iommu.h

-- 
2.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]