On Sun, May 1, 2016 at 5:00 PM, Michael S. Tsirkin <m...@redhat.com> wrote: > On Sun, May 01, 2016 at 04:47:44PM +0300, Michael S. Tsirkin wrote: >> On Sat, Apr 30, 2016 at 01:42:39AM +0300, David Kiarie wrote: >> > These series adds AMD IOMMU support to Qemu. It's currently in the 9th >> > version. >> > >> > In this series I have (hopefully) addressed all the comments made in the >> > previous version. >> >> changelog? >> >> > I have also tested and successfully passed-through PCI device 'ac97' with >> > more devices to be tested. >> >> >> A fundamental problem with AMD IOMMUs is that the VMM must write-protect >> guest I/O page tables from the guest in order to intercept all guest >> updates and propagate the updates to the shadow I/O page tables. >> >> AMD manual says as much. > > Actually while it says so, it's wrong. > There's an NPcache flag which makes guest to invalidations > for invalid to valid transitions. > >> Until this is implemented, I think device assignment must be disabled >> when AMD IOMMU is in use. > > So I take this back. I would, however, like to see how this > interacts with Aviv's patches enabling VFIO support for IOMMU. > The initial consensus was to deny VFIO when user requests for IOMMU and I did actually look at that but I can't get an obvious way to disable, or even tell that a user requested for a device when they do so via '-device'. The only way to disable VFIO was parsing the command line argument which seemed very ugly.
Other than that, I would prefer not to add more features to this patchset but I will still be working on IOMMU for the next few months so I'll probably look at that. >> >> > >> > David Kiarie (4): >> > hw/i386: Introduce AMD IOMMU >> > hw/i386: ACPI table for AMD IOMMU >> > hw/core: Add AMD IOMMU to machine properties >> > hw/pci-host: Emulate AMD IOMMU >> > >> > hw/acpi/aml-build.c | 2 +- >> > hw/acpi/core.c | 13 - >> > hw/core/machine.c | 33 +- >> > hw/i386/Makefile.objs | 1 + >> > hw/i386/acpi-build.c | 93 ++- >> > hw/i386/amd_iommu.c | 1426 >> > +++++++++++++++++++++++++++++++++++++++++ >> > hw/i386/amd_iommu.h | 398 ++++++++++++ >> > hw/pci-host/q35.c | 25 +- >> > include/hw/acpi/acpi-defs.h | 14 + >> > include/hw/acpi/acpi.h | 16 + >> > 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 +- >> > 16 files changed, 2012 insertions(+), 35 deletions(-) >> > create mode 100644 hw/i386/amd_iommu.c >> > create mode 100644 hw/i386/amd_iommu.h >> > >> > -- >> > 2.1.4