kvm: remove hard dependency on pci
The msi routing code in kvm calls some pci functions: provide some stubs to enable builds without pci. Also, to make this more obvious, guard them via a pci_available boolean (which also can be reused in other places). Fixes:e1d4fb2de
("kvm-irqchip: x86: add msi route notify fn") Fixes:767a554a0
("kvm-all: Pass requester ID to MSI routing functions") Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
5f8c92e1d5
commit
88c725c78e
@ -1248,7 +1248,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
|
||||
int virq;
|
||||
MSIMessage msg = {0, 0};
|
||||
|
||||
if (dev) {
|
||||
if (pci_available && dev) {
|
||||
msg = pci_get_msi_message(dev, vector);
|
||||
}
|
||||
|
||||
@ -1271,7 +1271,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
|
||||
kroute.u.msi.address_lo = (uint32_t)msg.address;
|
||||
kroute.u.msi.address_hi = msg.address >> 32;
|
||||
kroute.u.msi.data = le32_to_cpu(msg.data);
|
||||
if (kvm_msi_devid_required()) {
|
||||
if (pci_available && kvm_msi_devid_required()) {
|
||||
kroute.flags = KVM_MSI_VALID_DEVID;
|
||||
kroute.u.msi.devid = pci_requester_id(dev);
|
||||
}
|
||||
@ -1309,7 +1309,7 @@ int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg,
|
||||
kroute.u.msi.address_lo = (uint32_t)msg.address;
|
||||
kroute.u.msi.address_hi = msg.address >> 32;
|
||||
kroute.u.msi.data = le32_to_cpu(msg.data);
|
||||
if (kvm_msi_devid_required()) {
|
||||
if (pci_available && kvm_msi_devid_required()) {
|
||||
kroute.flags = KVM_MSI_VALID_DEVID;
|
||||
kroute.u.msi.devid = pci_requester_id(dev);
|
||||
}
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "hw/pci/msi.h"
|
||||
|
||||
bool msi_nonbroken;
|
||||
bool pci_available;
|
||||
|
||||
PciInfoList *qmp_query_pci(Error **errp)
|
||||
{
|
||||
@ -38,3 +39,16 @@ void hmp_pcie_aer_inject_error(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
monitor_printf(mon, "PCI devices not supported\n");
|
||||
}
|
||||
|
||||
/* kvm-all wants this */
|
||||
MSIMessage pci_get_msi_message(PCIDevice *dev, int vector)
|
||||
{
|
||||
g_assert(false);
|
||||
return (MSIMessage){};
|
||||
}
|
||||
|
||||
uint16_t pci_requester_id(PCIDevice *dev)
|
||||
{
|
||||
g_assert(false);
|
||||
return 0;
|
||||
}
|
||||
|
@ -49,6 +49,8 @@
|
||||
# define PCI_DPRINTF(format, ...) do { } while (0)
|
||||
#endif
|
||||
|
||||
bool pci_available = true;
|
||||
|
||||
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
||||
static char *pcibus_get_dev_path(DeviceState *dev);
|
||||
static char *pcibus_get_fw_dev_path(DeviceState *dev);
|
||||
|
@ -10,6 +10,8 @@
|
||||
|
||||
#include "hw/pci/pcie.h"
|
||||
|
||||
extern bool pci_available;
|
||||
|
||||
/* PCI bus */
|
||||
|
||||
#define PCI_DEVFN(slot, func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
|
||||
|
Loading…
Reference in New Issue
Block a user