xemu/include/hw
Peter Xu 4a94b3aa6d pci: fix pci_requester_id()
This fix SID verification failure when IOMMU IR is enabled with PCI
bridges. Existing pci_requester_id() is more like getting BDF info
only. Renaming it to pci_get_bdf(). Meanwhile, we provide the correct
implementation to get requester ID. VT-d spec 5.1.1 is a good reference
to go, though it talks only about interrupt delivery, the rule works
exactly the same for non-interrupt cases.

Currently, there are three use cases for pci_requester_id():

- PCIX status bits: here we need BDF only, not requester ID. Replacing
  with pci_get_bdf().
- PCIe Error injection and MSI delivery: for both these cases, we are
  looking for requester IDs. Here we should use the new impl.

To avoid a PCI walk every time we send MSI message, one requester_id
cache field is added to PCIDevice to cache the result when initialize
PCI device.

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>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2016-06-17 03:28:02 +03:00
..
acpi all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
arm arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma 2016-06-14 16:01:03 +01:00
audio isa: QOM'ify ISADevice 2013-06-07 14:55:33 +02:00
block fdc: add function to determine drive chs limits 2016-03-11 14:55:15 +02:00
char hw/char: QOM'ify xilinx_uartlite model 2016-06-06 16:59:32 +01:00
cpu icc_bus: drop the unused files 2015-10-02 16:22:02 -03:00
cris hw/char: QOM'ify etraxfs_ser.c 2016-05-29 09:11:10 +02:00
display introduce xlnx-dp 2016-06-14 16:01:03 +01:00
dma introduce xlnx-dpdma 2016-06-14 16:01:03 +01:00
gpio i.MX: add support for lower and upper interrupt in GPIO. 2015-12-17 13:37:13 +00:00
i2c hw/i2c-ddc.c: Implement DDC I2C slave 2016-06-14 15:59:15 +01:00
i386 ICH9: fix typo 2016-06-07 18:19:23 +03:00
input cuda: port SET_DEVICE_LIST command to new framework 2016-02-17 09:59:30 +11:00
intc hw/intc: Add (new) ASPEED VIC device model 2016-03-16 17:42:18 +00: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 hw: clean up hw/hw.h includes 2016-05-19 16:42:30 +02: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 pc-dimm: introduce realize callback 2016-06-07 15:39:28 +03:00
mips mips: use MIPSCPU instead of CPUMIPSState 2016-05-19 16:42:27 +02:00
misc introduce aux-bus 2016-06-14 15:59:15 +01:00
net Add ENET/Gbps Ethernet support to FEC device 2016-06-02 10:42:46 +08:00
nvram Sort the fw_cfg file list 2016-04-07 19:57:33 +03:00
pci pci: fix pci_requester_id() 2016-06-17 03:28:02 +03:00
pci-host spapr_pci: Add and export DMA resetting helper 2016-06-07 10:17:45 +10:00
ppc spapr: Ensure all LMBs are represented in ibm,dynamic-memory 2016-06-14 13:20:01 +10:00
s390x s390x/css: introduce property type for device ids 2016-06-14 13:34:50 +02:00
scsi Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
sd qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00
sh4 sh4: include cpu-qom.h in files that require SuperHCPU 2016-05-19 16:42:27 +02:00
smbios smbios: fix typo 2016-05-18 15:04:27 +03:00
sparc QOM infrastructure fixes and device conversions 2015-03-02 13:20:43 +00:00
ssi i.MX: Add the Freescale SPI Controller 2016-05-12 13:22:29 +01:00
timer Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
tricore target-tricore: Add board for systemmode 2014-09-01 14:49:20 +01:00
unicore32 hw: move headers to include/ 2013-04-08 18:13:10 +02:00
usb usb: move ehci register defines to header file 2014-06-02 16:28:59 +02:00
vfio memory: Fix IOMMU replay base address 2016-05-26 11:12:08 -06:00
virtio -----BEGIN PGP SIGNATURE----- 2016-06-07 15:59:28 +01:00
watchdog s390x/watchdog: introduce diag288 watchdog device 2015-06-11 17:45:49 +02:00
xen xen: Clean up includes 2016-06-14 15:37:43 +01:00
boards.h machine: add properties to compat_props incrementaly 2016-05-20 14:28:54 -03:00
bt.h bt: check struct sizes 2015-12-04 09:39:55 +03:00
compat.h s390x: add compat machine for 2.7 2016-05-17 15:50:29 +02:00
devices.h arm: fix location of some include files 2013-04-15 15:16:01 +02:00
elf_ops.h loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
empty_slot.h hw: move headers to include/ 2013-04-08 18:13:10 +02:00
fw-path-provider.h fw-path-provider: Change GPL version to 2+ 2014-04-07 15:36:07 +02:00
hotplug.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01: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 Sort the fw_cfg file list 2016-04-07 19:57:33 +03:00
nmi.h nmi: remove x86 specific nmi handling 2016-05-23 16:53:46 +02:00
pcmcia.h hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
platform-bus.h sysbus: Add new platform bus helper device 2014-11-04 23:26:14 +01:00
ptimer.h hw/ptimer: Introduce ptimer_get_limit 2016-06-06 16:59:31 +01:00
qdev-core.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
qdev-dma.h qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
qdev-properties.h qdev: Clean up around properties 2016-06-07 18:19:23 +03:00
qdev.h hw: move headers to include/ 2013-04-08 18:13:10 +02:00
stream.h Trivial grammar and spelling fixes 2013-05-01 20:55:21 +04:00
sysbus.h hw: remove pio_addr_t 2016-05-19 16:42:30 +02:00
usb.h include/qemu/iov.h: Don't include qemu-common.h 2016-03-22 22:20:16 +01:00