qemu/include/hw
Peter Xu 1d9efa73e1 intel-iommu: add iommu lock
SECURITY IMPLICATION: this patch fixes a potential race when multiple
threads access the IOMMU IOTLB cache.

Add a per-iommu big lock to protect IOMMU status.  Currently the only
thing to be protected is the IOTLB/context cache, since that can be
accessed even without BQL, e.g., in IO dataplane.

Note that we don't need to protect device page tables since that's fully
controlled by the guest kernel.  However there is still possibility that
malicious drivers will program the device to not obey the rule.  In that
case QEMU can't really do anything useful, instead the guest itself will
be responsible for all uncertainties.

CC: QEMU Stable <qemu-stable@nongnu.org>
Reported-by: Fam Zheng <famz@redhat.com>
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-05-23 17:33:57 +03:00
..
acpi hw/arm/virt-acpi-build: Add smmuv3 node in IORT table 2018-05-04 18:52:58 +01:00
adc
arm xlnx-zynqmp: Connect the ZynqMP GDMA and ADMA 2018-05-18 17:48:07 +01:00
audio hw/audio/wm8750: move WM8750 declarations from i2c/i2c.h to audio/wm8750.h 2018-02-02 08:19:25 +01:00
block Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
char serial-isa: Use MAX_ISA_SERIAL_PORTS instead of MAX_SERIAL_PORTS 2018-04-26 13:57:00 +01:00
core hw/core/split-irq: Device that splits IRQ lines 2018-03-02 11:03:45 +00:00
cpu hw: remove "qemu/osdep.h" from header files 2017-12-18 17:07:02 +03:00
cris
display hw/display/vga: extract public API from i386/pc to "hw/display/vga.h" 2017-12-18 17:07:02 +03:00
dma xlnx-zdma: Add a model of the Xilinx ZynqMP generic DMA 2018-05-18 17:48:07 +01:00
gpio
i2c i2c: Move the bus class to i2c.h 2018-03-01 11:05:45 +00:00
i386 intel-iommu: add iommu lock 2018-05-23 17:33:57 +03:00
ide Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
input ps2: Fix mouse stream corruption due to lost data 2018-05-15 11:31:33 +02:00
intc heathrow: remove obsolete heathow_init() function 2018-04-27 18:05:22 +10:00
ipack
ipmi
isa superio: Don't use MAX_SERIAL_PORTS for serial port limit 2018-04-26 13:57:00 +01:00
kvm
lm32
m68k
mem nvdimm: fix typo in label-size definition 2018-05-23 17:02:03 +03:00
mips mips: malta/boston: replace cpu_model with cpu_type 2017-10-27 16:04:28 +02:00
misc mac_newworld: move wiring of macio IRQs to macio_newworld_realize() 2018-05-04 15:00:37 +10:00
net imx_fec: Reserve full FSL_IMX25_FEC_SIZE page for the register file 2018-01-11 13:25:38 +00:00
nvram Clean up includes 2018-02-09 05:05:11 +01:00
pci allocate pci id for mdpy 2018-05-23 03:14:40 +03:00
pci-bridge Clean up includes 2018-02-09 05:05:11 +01:00
pci-host uninorth: create new uninorth device 2018-05-04 15:00:37 +10:00
ppc trivial: Do not include pci.h if it is not necessary 2018-05-20 08:40:00 +03:00
riscv RISC-V: Make virt header comment title consistent 2018-05-06 10:39:38 +12:00
s390x s390x: refactor reset/reipl handling 2018-05-14 17:10:02 +02:00
scsi scsi-disk: allow customizing the SCSI version 2018-04-09 16:36:39 +02:00
sd sdcard: use the registerfields API to access the OCR register 2018-02-22 15:12:52 +00:00
sh4
smbios Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
sparc sun4u_iommu: update to reflect IOMMU is no longer part of the APB device 2018-01-09 21:48:20 +00:00
ssi xilinx_spips: Set all of the reset values 2017-12-13 17:59:26 +00:00
timer xlnx-zynqmp-rtc: Add basic time support 2018-03-02 10:45:34 +00:00
tricore
unicore32 hw/unicore32: restrict hw addr defines to source file 2017-12-18 17:07:02 +03:00
usb usb: Add basic code to emulate Chipidea USB IP 2018-02-09 10:40:30 +00:00
vfio vfio-pci: Allow mmap of MSIX BAR 2018-03-13 11:17:31 -06:00
virtio virtio: support setting memory region based host notifier 2018-05-23 17:01:54 +03:00
watchdog watchdog: wdt_aspeed: Add support for the reset width register 2017-09-04 15:21:54 +01:00
xen xen: Remove now-obsolete xen_xc_domain_add_to_physmap 2018-04-26 16:29:51 +01:00
xtensa Clean up includes 2018-02-09 05:05:11 +01:00
boards.h machine: rename MemoryHotplugState to DeviceMemoryState 2018-05-07 10:00:02 -03:00
bt.h
compat.h spapr: Introduce pseries-2.13 machine type 2018-04-27 18:05:22 +10:00
devices.h
elf_ops.h Add symbol table callback interface to load_elf 2018-03-07 08:30:28 +13:00
empty_slot.h
fw-path-provider.h
hotplug.h
hw.h
ide.h
irq.h hw/core/split-irq: Device that splits IRQ lines 2018-03-02 11:03:45 +00:00
loader-fit.h Use #include "..." for our own headers, <...> for others 2018-02-09 05:05:11 +01:00
loader.h Add symbol table callback interface to load_elf 2018-03-07 08:30:28 +13:00
nmi.h
or-irq.h include/hw/or-irq.h: Add missing include guard 2018-03-02 11:03:45 +00:00
pcmcia.h
platform-bus.h platform-bus-device: use device plug callback instead of machine_done notifier 2018-05-10 18:10:56 +01:00
ptimer.h include/hw/ptimer.h: Add documentation comments 2017-07-11 17:44:27 +03:00
qdev-core.h qdev: Add new qdev_init_gpio_in_named_with_opaque() 2018-03-02 11:03:45 +00:00
qdev-dma.h
qdev-properties.h net: Remove the deprecated "vlan" parameter 2018-05-14 15:47:14 +08:00
qdev.h
register.h hw: register: Run post_write hook on reset 2018-03-01 11:05:43 +00:00
registerfields.h Use #include "..." for our own headers, <...> for others 2018-02-09 05:05:11 +01:00
stream.h
sysbus.h
usb.h usb: Remove legacy -usbdevice options (host, serial, disk and net) 2018-01-26 07:15:08 +01:00