qemu/hw
Peter Xu ccc23bb08a intel_iommu: dma read/write draining support
Support DMA read/write draining should be easy for existing VT-d
emulation since the emulation itself does not have any request queue
there so we don't need to do anything to flush the un-commited queue.
What we need to do is to declare the support.

These capabilities are required to pass Windows SVVP test program.  It
is verified that when with parameters "x-aw-bits=48,caching-mode=off"
we can pass the Windows SVVP test with this patch applied.  Otherwise
we'll fail with:

        IOMMU[0] - DWD (DMA write draining) not supported
        IOMMU[0] - DWD (DMA read draining) not supported
        Segment 0 has no DMA remapping capable IOMMU units

However since these bits are not declared support for QEMU<=3.1, we'll
need a compatibility bit for it and we turn this on by default only
for QEMU>=4.0.

Please refer to VT-d spec 6.5.4 for more information.

CC: Yu Wang <wyu@redhat.com>
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1654550
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2018-12-19 16:48:16 -05:00
..
9pfs 9p: remove support for the "handle" backend 2018-12-12 14:18:10 +01:00
acpi pc:piix4: Update smbus I/O space after a migration 2018-12-19 16:48:16 -05:00
adc
alpha hw/alpha/typhoon: Remove unuseful code 2018-10-24 06:44:59 -03:00
arm hw/smbios: Move to the hw/firmware/ subdirectory 2018-12-19 16:48:16 -05:00
audio audio/hda: fix guest triggerable assert 2018-11-27 07:47:57 +01:00
block miscellaneous patches: 2018-12-16 16:32:43 +00:00
bt
char qmp hmp: Make system_wakeup check wake-up support and run state 2018-12-18 07:55:47 +01:00
core qapi: Define PCIe link speed and width properties 2018-12-19 16:48:16 -05:00
cpu
cris
display virtio: Helper for registering virtio device types 2018-12-19 16:48:16 -05:00
dma dma/puv3_dma: Convert sysbus init function to realize function 2018-12-13 13:47:58 +00:00
gpio gpio/puv3_gpio: Convert sysbus init function to realize function 2018-12-13 13:47:58 +00:00
hppa hw/hppa/dino: Remove unuseful code 2018-10-24 06:44:59 -03:00
hyperv hw/hyperv: fix NULL dereference with pure-kvm SynIC 2018-11-26 14:14:38 -02:00
i2c i2c: Move typedef of bitbang_i2c_interface to i2c.h 2018-12-12 10:01:13 +01:00
i386 intel_iommu: dma read/write draining support 2018-12-19 16:48:16 -05:00
ide replay: replay BH for IDE trim operation 2018-10-02 19:09:13 +02:00
input qmp hmp: Make system_wakeup check wake-up support and run state 2018-12-18 07:55:47 +01:00
intc miscellaneous patches: 2018-12-16 16:32:43 +00:00
ipack
ipmi
isa configs: Add a CONFIG_SMC37C669 switch for the "smc37c669-superio" device 2018-10-24 07:33:44 +01:00
lm32 milkymist: Check for failure trying to load BIOS image 2018-11-06 11:32:14 +00:00
m68k
mem memory-device: avoid overflows on very huge devices 2018-12-11 15:45:22 -02:00
microblaze
mips hw/mips/malta: Remove unuseful code 2018-10-24 06:44:59 -03:00
misc miscellaneous patches: 2018-12-16 16:32:43 +00:00
moxie change get_image_size return type to int64_t 2018-10-02 19:08:49 +02:00
net net: cadence_gem: Remove incorrect assert() 2018-11-26 13:41:42 +00:00
nios2
nvram nvram/ds1225y: Convert sysbus init function to realize function 2018-12-13 13:48:00 +00:00
openrisc
pci pcie: Fill PCIESlot link fields to support higher speeds and widths 2018-12-19 16:48:16 -05:00
pci-bridge pcie: Fast PCIe root ports for new machines 2018-12-19 16:48:16 -05:00
pci-host ppc patch queue 2018-11-08 2018-11-08 14:42:37 +00:00
pcmcia
ppc hw/ppc/ppc405_boards: Don't use load_image() 2018-12-14 13:30:50 +00:00
rdma
riscv hw/riscv/virt: Free the test device tree node name 2018-11-13 15:12:13 -08:00
s390x error: Remove NULL checks on error_propagate() calls 2018-12-18 14:57:48 +01:00
scsi vmstate: constify VMStateField 2018-11-27 15:35:15 +01:00
sd hw/sd/sdhci: Don't leak memory region in sdhci_sysbus_realize() 2018-12-14 13:30:54 +00:00
sh4 hw/sh4/sh_pci: Use DeviceState::realize rather than SysBusDevice::init 2018-10-24 06:44:59 -03:00
smbios hw/smbios: Move to the hw/firmware/ subdirectory 2018-12-19 16:48:16 -05:00
sparc Rename cpu_physical_memory_write_rom() to address_space_write_rom() 2018-12-14 13:30:48 +00:00
sparc64 hw/sparc64/niagara: Model the I/O Bridge with the 'unimplemented_device' 2018-10-24 06:44:59 -03:00
ssi hw/ssi/xilinx_spi: Use DeviceState::realize rather than SysBusDevice::init 2018-10-24 06:44:59 -03:00
timer qmp hmp: Make system_wakeup check wake-up support and run state 2018-12-18 07:55:47 +01:00
tpm tpm: Make sure the locality received from backend is valid 2018-12-04 10:21:25 -05:00
tricore
unicore32
usb usb: fixes for mtp, ehci, usb-host and pvusb (xen). 2018-12-16 12:05:08 +00:00
vfio vfio/pci: Remove PCIe Link Status emulation 2018-12-19 16:48:16 -05:00
virtio virtio: Provide version-specific variants of virtio PCI devices 2018-12-19 16:48:16 -05:00
watchdog
xen xen_backend: remove xen_sysdev_init() function 2018-12-13 13:48:02 +00:00
xenpv
xtensa target/xtensa: xtfpga: provide default memory sizes 2018-11-21 10:53:21 -08:00
Makefile.objs memory-device: introduce separate config option 2018-10-24 06:44:59 -03:00