From: Jan Kiszka <jan.kis...@siemens.com> The spec says (and real HW confirms this) that, if the bus master bit is 0, the device will not generate any PCI accesses. MSI and MSI-X messages fall among these.
Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- hw/pci/msi.c | 4 ++++ hw/pci/msix.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/hw/pci/msi.c b/hw/pci/msi.c index a4a3040..36b651b 100644 --- a/hw/pci/msi.c +++ b/hw/pci/msi.c @@ -285,6 +285,10 @@ void msi_notify(PCIDevice *dev, unsigned int vector) return; } + if (!(pci_get_word(dev->config + PCI_COMMAND) & PCI_COMMAND_MASTER)) { + return; + } + msg = msi_get_message(dev, vector); MSI_DEV_PRINTF(dev, diff --git a/hw/pci/msix.c b/hw/pci/msix.c index 5c49bfc..c77ae7d 100644 --- a/hw/pci/msix.c +++ b/hw/pci/msix.c @@ -437,6 +437,10 @@ void msix_notify(PCIDevice *dev, unsigned vector) return; } + if (!(pci_get_word(dev->config + PCI_COMMAND) & PCI_COMMAND_MASTER)) { + return; + } + msg = msix_get_message(dev, vector); stl_le_phys(&address_space_memory, msg.address, msg.data); -- 1.8.1.1.298.ge7eed54
signature.asc
Description: OpenPGP digital signature