qemu/include/hw/pci
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
..
msi.h msi_supported -> msi_nonbroken 2016-03-11 16:45:21 +02:00
msix.h msix: make msix_clr_pending() visible for clients 2016-06-02 10:42:09 +08:00
pci_bridge.h change type of pci_bridge_initfn() to void 2016-02-16 12:05:18 +02:00
pci_bus.h hw/pci: add support for NUMA nodes 2015-06-03 18:19:18 +02:00
pci_host.h pci: Fold host_buses list into PCIHostState functionality 2013-07-07 23:10:57 +03:00
pci_ids.h hw: Add support for LSI SAS1068 (mptsas) device 2016-02-09 15:45:26 +01:00
pci_regs.h pci: Introduce define for PM capability version 1.1 2016-06-02 10:42:09 +08:00
pci-assign.h hw/pci-assign: split pci-assign.c 2015-09-10 12:04:27 +00:00
pci.h pci: fix pci_requester_id() 2016-06-17 03:28:02 +03:00
pcie_aer.h pcie_aer: expose pcie_aer_msg() interface 2016-02-19 09:42:28 -07:00
pcie_host.h pci: Split pcie_host_mmcfg_map() 2015-01-26 20:25:52 +02:00
pcie_port.h pcie_port: Turn PCIEPort and PCIESlot into abstract QOM types 2013-07-29 20:45:24 +02:00
pcie_regs.h pcie: Add support for PCIe CAP v1 2016-06-02 10:42:26 +08:00
pcie.h pcie: Introduce function for DSN capability creation 2016-06-02 10:42:26 +08:00
shpc.h include: Clean up includes 2016-02-23 12:43:05 +00:00
slotid_cap.h hw: move headers to include/ 2013-04-08 18:13:10 +02:00