kconfig: add CONFIG_MSI_NONBROKEN

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>
This commit is contained in:
Paolo Bonzini 2019-03-14 14:13:34 +01:00
parent 4f5604c41d
commit ca9b7e29de
6 changed files with 13 additions and 0 deletions

View File

@ -12,12 +12,15 @@ config IOAPIC
config ARM_GIC
bool
select MSI_NONBROKEN
config OPENPIC
bool
select MSI_NONBROKEN
config APIC
bool
select MSI_NONBROKEN
config ARM_GIC_KVM
bool

View File

@ -49,3 +49,4 @@ config PCI_EXPRESS_XILINX
config PCI_EXPRESS_DESIGNWARE
bool
select PCI_EXPRESS
select MSI_NONBROKEN

View File

@ -7,3 +7,9 @@ config PCI_EXPRESS
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

View File

@ -8,6 +8,7 @@ config PSERIES
select VFIO if LINUX # needed by spapr_pci_vfio.c
select XICS_SPAPR
select XIVE_SPAPR
select MSI_NONBROKEN
config SPAPR_RNG
bool

View File

@ -6,6 +6,7 @@ config HART
config SIFIVE
bool
select MSI_NONBROKEN
config SIFIVE_E
bool

View File

@ -9,3 +9,4 @@ config S390_CCW_VIRTIO
select S390_FLIC
select SCLPCONSOLE
select VIRTIO_CCW
select MSI_NONBROKEN