Commit cc943c36 authored by Jan Kiszka's avatar Jan Kiszka Committed by Michael S. Tsirkin
Browse files

pci: Use bus master address space for delivering MSI/MSI-X messages



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, so we should use the corresponding address
space to deliver them. This will prevent delivery if bus master support
is disabled.

Cc: qemu-stable@nongnu.org
Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 2d591ce2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -291,7 +291,7 @@ void msi_notify(PCIDevice *dev, unsigned int vector)
                   "notify vector 0x%x"
                   " address: 0x%"PRIx64" data: 0x%"PRIx32"\n",
                   vector, msg.address, msg.data);
    stl_le_phys(&address_space_memory, msg.address, msg.data);
    stl_le_phys(&dev->bus_master_as, msg.address, msg.data);
}

/* Normally called by pci_default_write_config(). */
+1 −1
Original line number Diff line number Diff line
@@ -439,7 +439,7 @@ void msix_notify(PCIDevice *dev, unsigned vector)

    msg = msix_get_message(dev, vector);

    stl_le_phys(&address_space_memory, msg.address, msg.data);
    stl_le_phys(&dev->bus_master_as, msg.address, msg.data);
}

void msix_reset(PCIDevice *dev)