qemu/hw/i386
Peter Xu 64e184e260 pci-assign: sync MSI/MSI-X cap and table with PCIDevice
Since commit e1d4fb2d ("kvm-irqchip: x86: add msi route notify fn"),
kvm_irqchip_add_msi_route() starts to use pci_get_msi_message() to fetch
MSI info. This requires that we setup MSI related fields in PCIDevice.
For most devices, that won't be a problem, as long as we are using
general interfaces like msi_init()/msix_init().

However, for pci-assign devices, MSI/MSI-X is treated differently - PCI
assign devices are maintaining its own MSI table and cap information in
AssignedDevice struct. however that's not synced up with PCIDevice's
fields. That will leads to pci_get_msi_message() failed to find correct
MSI capability, even with an NULL msix_table.

A quick fix is to sync up the two places: both the capability bits and
table address for MSI/MSI-X.

Reported-by: Changlimin <changlimin@h3c.com>
Tested-by: Changlimin <changlimin@h3c.com>
Cc: qemu-stable@nongnu.org
Fixes: e1d4fb2d ("kvm-irqchip: x86: add msi route notify fn")
Signed-off-by: Peter Xu <peterx@redhat.com>

Message-Id: <1480042522-16551-1-git-send-email-peterx@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-11-28 15:11:17 +01:00
..
kvm pci-assign: sync MSI/MSI-X cap and table with PCIDevice 2016-11-28 15:11:17 +01:00
xen xen_platform: SUSE xenlinux unplug for emulated PCI 2016-10-21 12:11:38 -07:00
acpi-build.c acpi: Use apic_id_limit when calculating legacy ACPI table size 2016-11-18 17:50:09 +02:00
acpi-build.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
amd_iommu.c hw/iommu: Fix problems reported by Coverity scan 2016-10-04 10:00:21 +02:00
amd_iommu.h hw/i386: Introduce AMD IOMMU 2016-09-24 01:02:00 +03:00
intel_iommu_internal.h intel_iommu: fixing source id during IOTLB hash key calculation 2016-11-15 17:20:36 +02:00
intel_iommu.c intel_iommu: fix incorrect assert 2016-11-15 17:20:36 +02:00
kvmvapic.c *_run_on_cpu: introduce run_on_cpu_data type 2016-10-31 15:00:25 +01:00
Makefile.objs hw/i386: Introduce AMD IOMMU 2016-09-24 01:02:00 +03:00
multiboot.c hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
multiboot.h refer to FWCfgState explicitly 2013-06-02 18:14:02 +03:00
pc_piix.c pc: Add 2.8 machine 2016-09-09 20:58:34 +03:00
pc_q35.c pc: q35: Bump max_cpus to 288 2016-10-24 17:29:15 -02:00
pc_sysfw.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
pc.c pc: fix FW_CFG_NB_CPUS to account for -device added CPUs 2016-11-16 12:10:00 -02:00
pci-assign-load-rom.c pci-assign: Move "Invalid ROM" error message to pci-assign-load-rom.c 2016-06-29 14:03:47 +02:00
trace-events trace: move hw/mem/pc-dimm.c trace points into correct file 2016-09-28 19:17:54 +01:00
x86-iommu.c hw/i386: AMD IOMMU IVRS table 2016-09-24 01:02:01 +03:00