Not all interrupt controllers support message-signalled interrupts, and some devices *only* support message-signalled interrupts.
In QEMU this is represented by the "msi_nonbroken" variable. This patch adds a new configuration symbol enabled whenever the binary contains an interrupt controller that will set "msi_nonbroken". We can then use it to remove devices that cannot be possibly added to the machine, because they require MSI. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- hw/intc/Kconfig | 3 +++ hw/pci-host/Kconfig | 1 + hw/pci/Kconfig | 4 ++++ hw/ppc/Kconfig | 1 + hw/s390x/Kconfig | 1 + 5 files changed, 10 insertions(+) diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig index de10a6bcbf..e78b5db3be 100644 --- a/hw/intc/Kconfig +++ b/hw/intc/Kconfig @@ -12,12 +12,15 @@ config IOAPIC config ARM_GIC bool + select MSI config OPENPIC bool + select MSI config APIC bool + select MSI config ARM_GIC_KVM bool diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig index b39ea297ba..58c99f55fa 100644 --- a/hw/pci-host/Kconfig +++ b/hw/pci-host/Kconfig @@ -49,3 +49,4 @@ config PCI_EXPRESS_XILINX config PCI_EXPRESS_DESIGNWARE bool select PCI_EXPRESS + select MSI diff --git a/hw/pci/Kconfig b/hw/pci/Kconfig index 3b8638b51d..574b5d4a4a 100644 --- a/hw/pci/Kconfig +++ b/hw/pci/Kconfig @@ -7,3 +7,7 @@ config PCI_EXPRESS config PCI_DEVICES bool + +config MSI + # selected by interrupt controllers that support MSI + bool diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index 2b83637511..c14f7ea4fe 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -8,6 +8,7 @@ config PSERIES select VFIO if LINUX # needed by spapr_pci_vfio.c select XICS_SPAPR select XIVE_SPAPR + select MSI config SPAPR_RNG bool diff --git a/hw/s390x/Kconfig b/hw/s390x/Kconfig index a7046ea41f..ac0f335584 100644 --- a/hw/s390x/Kconfig +++ b/hw/s390x/Kconfig @@ -9,3 +9,4 @@ config S390_CCW_VIRTIO select S390_FLIC select SCLPCONSOLE select VIRTIO_CCW + select MSI -- 2.20.1