summaryrefslogtreecommitdiffstats
path: root/hw/i386
diff options
context:
space:
mode:
authorGerd Hoffmann2020-10-16 13:38:32 +0200
committerGerd Hoffmann2020-10-21 11:36:05 +0200
commit64b070dad39dcae2fe06f498c0536df9a54e4beb (patch)
treeac075e4386b848272c0207fd854441bf4e2857fc /hw/i386
parentx86: make pci irqs runtime configurable (diff)
downloadqemu-64b070dad39dcae2fe06f498c0536df9a54e4beb.tar.gz
qemu-64b070dad39dcae2fe06f498c0536df9a54e4beb.tar.xz
qemu-64b070dad39dcae2fe06f498c0536df9a54e4beb.zip
microvm: set pci_irq_mask
Makes sure the PCI interrupt overrides are added to the APIC table in case PCIe is enabled. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20201016113835.17465-5-kraxel@redhat.com
Diffstat (limited to 'hw/i386')
-rw-r--r--hw/i386/acpi-microvm.c2
-rw-r--r--hw/i386/microvm.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/hw/i386/acpi-microvm.c b/hw/i386/acpi-microvm.c
index f16f231195..8e2d2b7cff 100644
--- a/hw/i386/acpi-microvm.c
+++ b/hw/i386/acpi-microvm.c
@@ -196,7 +196,7 @@ static void acpi_build_microvm(AcpiBuildTables *tables,
acpi_add_table(table_offsets, tables_blob);
acpi_build_madt(tables_blob, tables->linker, X86_MACHINE(machine),
- ACPI_DEVICE_IF(x86ms->acpi_dev), false);
+ ACPI_DEVICE_IF(x86ms->acpi_dev), x86ms->pci_irq_mask != 0);
xsdt = tables_blob->len;
build_xsdt(tables_blob, tables->linker, table_offsets, NULL, NULL);
diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c
index 68a7f424ac..c60ba4e840 100644
--- a/hw/i386/microvm.c
+++ b/hw/i386/microvm.c
@@ -210,6 +210,12 @@ static void microvm_devices_init(MicrovmMachineState *mms)
mms->gpex.ecam.size = PCIE_ECAM_SIZE;
mms->gpex.irq = PCIE_IRQ_BASE;
create_gpex(mms);
+ x86ms->pci_irq_mask = ((1 << (PCIE_IRQ_BASE + 0)) |
+ (1 << (PCIE_IRQ_BASE + 1)) |
+ (1 << (PCIE_IRQ_BASE + 2)) |
+ (1 << (PCIE_IRQ_BASE + 3)));
+ } else {
+ x86ms->pci_irq_mask = 0;
}
if (mms->pic == ON_OFF_AUTO_ON || mms->pic == ON_OFF_AUTO_AUTO) {