Not all interrupt controllers have a working implementation of
message-signalled interrupts; in some cases, the guest may expect
MSI to work but it won't due to the buggy or lacking emulation.
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 <pbonzini@redhat.com>
config ARM_GIC
bool
+ select MSI_NONBROKEN
config OPENPIC
bool
+ select MSI_NONBROKEN
config APIC
bool
+ select MSI_NONBROKEN
config ARM_GIC_KVM
bool
config PCI_EXPRESS_DESIGNWARE
bool
select PCI_EXPRESS
+ select MSI_NONBROKEN
config PCI_DEVICES
bool
+
+config MSI_NONBROKEN
+ # selected by interrupt controllers that do not support MSI,
+ # or support it and have a good implementation. See commit
+ # 47d2b0f33c664533b8dbd5cb17faa8e6a01afe1f.
+ bool
select VFIO if LINUX # needed by spapr_pci_vfio.c
select XICS_SPAPR
select XIVE_SPAPR
+ select MSI_NONBROKEN
config SPAPR_RNG
bool
config SIFIVE
bool
+ select MSI_NONBROKEN
config SIFIVE_E
bool
select S390_FLIC
select SCLPCONSOLE
select VIRTIO_CCW
+ select MSI_NONBROKEN