qemu/include/hw
Peter Xu cdb3081269 memory: introduce IOMMUNotifier and its caps
IOMMU Notifier list is used for notifying IO address mapping changes.
Currently VFIO is the only user.

However it is possible that future consumer like vhost would like to
only listen to part of its notifications (e.g., cache invalidations).

This patch introduced IOMMUNotifier and IOMMUNotfierFlag bits for a
finer grained control of it.

IOMMUNotifier contains a bitfield for the notify consumer describing
what kind of notification it is interested in. Currently two kinds of
notifications are defined:

- IOMMU_NOTIFIER_MAP:    for newly mapped entries (additions)
- IOMMU_NOTIFIER_UNMAP:  for entries to be removed (cache invalidates)

When registering the IOMMU notifier, we need to specify one or multiple
types of messages to listen to.

When notifications are triggered, its type will be checked against the
notifier's type bits, and only notifiers with registered bits will be
notified.

(For any IOMMU implementation, an in-place mapping change should be
 notified with an UNMAP followed by a MAP.)

Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <1474606948-14391-2-git-send-email-peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-09-27 08:59:16 +02:00
..
acpi hw/i386: AMD IOMMU IVRS table 2016-09-24 01:02:01 +03:00
arm aspeed-soc: provide a framework to add new SoCs 2016-09-22 18:13:05 +01:00
audio Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
block block/qdev: Allow configuring rerror/werror with qdev properties 2016-07-13 13:32:27 +02:00
char Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
cpu qapi: keep names in 'CpuInstanceProperties' in sync with struct CPUCore 2016-06-27 13:15:06 +10:00
cris Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
display Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
dma dma: xlnx-zynq-devcfg: Fix up XLNX_ZYNQ_DEVCFG_R_MAX 2016-09-22 18:13:08 +01:00
gpio Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
i2c Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
i386 hw/i386: AMD IOMMU IVRS table 2016-09-24 01:02:01 +03:00
ide portio: keep references on portio 2016-09-08 18:05:21 +04:00
input adb-keys.h: initial commit 2016-09-23 10:29:40 +10:00
intc gic: provide defines for v2/v3 targetlist sizes 2016-07-14 16:51:37 +01:00
ipack ipack: Update e-mail address 2016-05-18 15:04:27 +03:00
ipmi ipmi: rework the fwinfo to be fetched from the interface 2016-06-07 15:36:54 +03:00
isa portio: keep references on portio 2016-09-08 18:05:21 +04:00
kvm hw: move headers to include/ 2013-04-08 18:13:10 +02:00
lm32 hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
m68k m68k: include cpu-qom.h in files that require M68KCPU 2016-05-19 16:42:27 +02:00
mem nvdimm: support nvdimm label 2016-06-24 05:13:57 +03:00
mips hw/mips/cps: create GIC block inside CPS 2016-07-12 09:10:13 +01:00
misc aspeed: add a ram_size property to the memory controller 2016-09-22 18:13:06 +01:00
net cadence_gem: Add support for screening 2016-09-22 18:13:07 +01:00
nvram * Updated fw_cfg option ROM to include DMA support 2016-07-14 16:49:18 +01:00
pci hw/pci: Prepare for AMD IOMMU 2016-09-23 19:03:56 +03:00
pci-host spapr_pci: Add numa node id 2016-09-23 12:39:07 +10:00
ppc ppc/xics: An ICS with offset 0 is assumed to be uninitialized 2016-09-23 12:39:07 +10:00
s390x s390x/kvm: disable cpu model for the 2.7 machine 2016-09-19 11:05:51 +02:00
scsi Remove unused function declarations 2016-09-15 15:32:22 +03:00
sd Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
sh4 Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
smbios Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sparc Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
ssi Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
timer Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
tricore Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
unicore32 Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
usb Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vfio memory: introduce IOMMUNotifier and its caps 2016-09-27 08:59:16 +02:00
virtio virtio: stop virtqueue processing if device is broken 2016-09-23 19:03:55 +03:00
watchdog Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
xen xen: handle inbound migration of VMs without ioreq server pages 2016-08-12 16:38:30 -07:00
boards.h machine: use class base init generated name 2016-09-08 18:05:21 +04:00
bt.h Remove unused function declarations 2016-09-15 15:32:22 +03:00
compat.h virtio-pci: reduce modern_mem_bar size 2016-09-09 20:58:34 +03:00
devices.h arm: fix location of some include files 2013-04-15 15:16:01 +02:00
elf_ops.h loader: Add AddressSpace loading support to ELFs 2016-09-22 18:13:08 +01:00
empty_slot.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
fw-path-provider.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
hotplug.h qdev: hotplug: Introduce HotplugHandler.pre_plug() callback 2016-06-17 16:33:48 +10:00
hw.h hw: clean up hw/hw.h includes 2016-05-19 16:42:30 +02:00
ide.h Call pci_piix3_xen_ide_unplug from unplug_disks 2014-02-20 17:28:08 +00:00
irq.h irq: Remove qemu_irq_intercept_out 2014-10-23 16:41:25 +02:00
loader.h loader: Add AddressSpace loading support to targphys 2016-09-22 18:13:08 +01:00
nmi.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
pcmcia.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
platform-bus.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
ptimer.h hw/ptimer: Introduce timer policy feature 2016-09-22 18:13:06 +01:00
qdev-core.h bus: simplify name handling 2016-09-08 18:05:22 +04:00
qdev-dma.h qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
qdev-properties.h block/qdev: Allow configuring rerror/werror with qdev properties 2016-07-13 13:32:27 +02:00
qdev.h hw: move headers to include/ 2013-04-08 18:13:10 +02:00
register.h register: Add block initialise helper 2016-07-04 13:15:22 +01:00
stream.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sysbus.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
usb.h usb: Add QOM property "attached". 2016-06-22 12:53:26 +02:00