Commit 5794d34a authored by Gerd Hoffmann's avatar Gerd Hoffmann Committed by Michael S. Tsirkin
Browse files

acpi: madt: skip pci override on pci-less systems.



Needed for microvm.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarIgor Mammedov <imammedo@redhat.com>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20200520132003.9492-8-kraxel@redhat.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent eb66ffab
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2588,7 +2588,7 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)

    acpi_add_table(table_offsets, tables_blob);
    acpi_build_madt(tables_blob, tables->linker, x86ms,
                    ACPI_DEVICE_IF(pcms->acpi_dev));
                    ACPI_DEVICE_IF(pcms->acpi_dev), true);

    vmgenid_dev = find_vmgenid_dev();
    if (vmgenid_dev) {
+15 −11
Original line number Diff line number Diff line
@@ -72,7 +72,8 @@ void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid,
}

void acpi_build_madt(GArray *table_data, BIOSLinker *linker,
                     X86MachineState *x86ms, AcpiDeviceIf *adev)
                     X86MachineState *x86ms, AcpiDeviceIf *adev,
                     bool has_pci)
{
    MachineClass *mc = MACHINE_GET_CLASS(x86ms);
    const CPUArchIdList *apic_ids = mc->possible_cpu_arch_ids(MACHINE(x86ms));
@@ -111,6 +112,8 @@ void acpi_build_madt(GArray *table_data, BIOSLinker *linker,
        intsrcovr->gsi    = cpu_to_le32(2);
        intsrcovr->flags  = cpu_to_le16(0); /* conforms to bus specifications */
    }

    if (has_pci) {
        for (i = 1; i < 16; i++) {
#define ACPI_BUILD_PCI_IRQS ((1<<5) | (1<<9) | (1<<10) | (1<<11))
            if (!(ACPI_BUILD_PCI_IRQS & (1 << i))) {
@@ -124,6 +127,7 @@ void acpi_build_madt(GArray *table_data, BIOSLinker *linker,
            intsrcovr->gsi    = cpu_to_le32(i);
            intsrcovr->flags  = cpu_to_le16(0xd); /* active high, level triggered */
        }
    }

    if (x2apic_mode) {
        AcpiMadtLocalX2ApicNmi *local_nmi;
+2 −1
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
#define ACPI_BUILD_IOAPIC_ID 0x0

void acpi_build_madt(GArray *table_data, BIOSLinker *linker,
                     X86MachineState *x86ms, AcpiDeviceIf *adev);
                     X86MachineState *x86ms, AcpiDeviceIf *adev,
                     bool has_pci);

#endif