mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-31 05:51:53 -06:00
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
4 changed files with 21 additions and 3 deletions
|
@ -1248,7 +1248,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, int vector, PCIDevice *dev)
|
||||||
int virq;
|
int virq;
|
||||||
MSIMessage msg = {0, 0};
|
MSIMessage msg = {0, 0};
|
||||||
|
|
||||||
if (dev) {
|
if (pci_available && dev) {
|
||||||
msg = pci_get_msi_message(dev, vector);
|
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_lo = (uint32_t)msg.address;
|
||||||
kroute.u.msi.address_hi = msg.address >> 32;
|
kroute.u.msi.address_hi = msg.address >> 32;
|
||||||
kroute.u.msi.data = le32_to_cpu(msg.data);
|
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.flags = KVM_MSI_VALID_DEVID;
|
||||||
kroute.u.msi.devid = pci_requester_id(dev);
|
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_lo = (uint32_t)msg.address;
|
||||||
kroute.u.msi.address_hi = msg.address >> 32;
|
kroute.u.msi.address_hi = msg.address >> 32;
|
||||||
kroute.u.msi.data = le32_to_cpu(msg.data);
|
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.flags = KVM_MSI_VALID_DEVID;
|
||||||
kroute.u.msi.devid = pci_requester_id(dev);
|
kroute.u.msi.devid = pci_requester_id(dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "hw/pci/msi.h"
|
#include "hw/pci/msi.h"
|
||||||
|
|
||||||
bool msi_nonbroken;
|
bool msi_nonbroken;
|
||||||
|
bool pci_available;
|
||||||
|
|
||||||
PciInfoList *qmp_query_pci(Error **errp)
|
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");
|
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)
|
# define PCI_DPRINTF(format, ...) do { } while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool pci_available = true;
|
||||||
|
|
||||||
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
||||||
static char *pcibus_get_dev_path(DeviceState *dev);
|
static char *pcibus_get_dev_path(DeviceState *dev);
|
||||||
static char *pcibus_get_fw_dev_path(DeviceState *dev);
|
static char *pcibus_get_fw_dev_path(DeviceState *dev);
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
#include "hw/pci/pcie.h"
|
#include "hw/pci/pcie.h"
|
||||||
|
|
||||||
|
extern bool pci_available;
|
||||||
|
|
||||||
/* PCI bus */
|
/* PCI bus */
|
||||||
|
|
||||||
#define PCI_DEVFN(slot, func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
|
#define PCI_DEVFN(slot, func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue