mirror of https://github.com/xemu-project/xemu.git
acpi: madt: skip pci override on pci-less systems.
Needed for microvm. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200520132003.9492-8-kraxel@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
eb66ffabc0
commit
5794d34a13
|
@ -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) {
|
||||
|
|
|
@ -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,18 +112,21 @@ 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 */
|
||||
}
|
||||
for (i = 1; i < 16; i++) {
|
||||
|
||||
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))) {
|
||||
/* No need for a INT source override structure. */
|
||||
continue;
|
||||
if (!(ACPI_BUILD_PCI_IRQS & (1 << i))) {
|
||||
/* No need for a INT source override structure. */
|
||||
continue;
|
||||
}
|
||||
intsrcovr = acpi_data_push(table_data, sizeof *intsrcovr);
|
||||
intsrcovr->type = ACPI_APIC_XRUPT_OVERRIDE;
|
||||
intsrcovr->length = sizeof(*intsrcovr);
|
||||
intsrcovr->source = i;
|
||||
intsrcovr->gsi = cpu_to_le32(i);
|
||||
intsrcovr->flags = cpu_to_le16(0xd); /* active high, level triggered */
|
||||
}
|
||||
intsrcovr = acpi_data_push(table_data, sizeof *intsrcovr);
|
||||
intsrcovr->type = ACPI_APIC_XRUPT_OVERRIDE;
|
||||
intsrcovr->length = sizeof(*intsrcovr);
|
||||
intsrcovr->source = i;
|
||||
intsrcovr->gsi = cpu_to_le32(i);
|
||||
intsrcovr->flags = cpu_to_le16(0xd); /* active high, level triggered */
|
||||
}
|
||||
|
||||
if (x2apic_mode) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue