acpi/acpi.c: Add and use acpi_arch_fill_madt()
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Change-Id: I4e5032fd02af7e8e9ffd2e20aa214a8392ab6335 Reviewed-on: https://review.coreboot.org/c/coreboot/+/76070 Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com> Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
This commit is contained in:
parent
51d94c7d73
commit
cd46e5f63a
|
@ -165,15 +165,7 @@ static void acpi_create_madt(acpi_header_t *header, void *unused)
|
||||||
if (acpi_fill_header(header, "APIC", MADT, sizeof(acpi_madt_t)) != CB_SUCCESS)
|
if (acpi_fill_header(header, "APIC", MADT, sizeof(acpi_madt_t)) != CB_SUCCESS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
madt->lapic_addr = cpu_get_lapic_addr();
|
current = acpi_arch_fill_madt(madt, current);
|
||||||
if (CONFIG(ACPI_HAVE_PCAT_8259))
|
|
||||||
madt->flags |= 1;
|
|
||||||
|
|
||||||
if (CONFIG(ACPI_COMMON_MADT_LAPIC))
|
|
||||||
current = acpi_create_madt_lapics_with_nmis(current);
|
|
||||||
|
|
||||||
if (CONFIG(ACPI_COMMON_MADT_IOAPIC))
|
|
||||||
current = acpi_create_madt_ioapic_gsi0_default(current);
|
|
||||||
|
|
||||||
if (CONFIG(ACPI_CUSTOM_MADT))
|
if (CONFIG(ACPI_CUSTOM_MADT))
|
||||||
current = acpi_fill_madt(current);
|
current = acpi_fill_madt(current);
|
||||||
|
|
|
@ -139,7 +139,7 @@ static int acpi_create_madt_sci_override(acpi_madt_irqoverride_t *irqoverride)
|
||||||
return irqoverride->length;
|
return irqoverride->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long acpi_create_madt_ioapic_gsi0_default(unsigned long current)
|
static unsigned long acpi_create_madt_ioapic_gsi0_default(unsigned long current)
|
||||||
{
|
{
|
||||||
current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
|
current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR);
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ unsigned long acpi_create_madt_lapic_nmis(unsigned long current)
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current)
|
static unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current)
|
||||||
{
|
{
|
||||||
current = acpi_create_madt_lapics(current);
|
current = acpi_create_madt_lapics(current);
|
||||||
current = acpi_create_madt_lapic_nmis(current);
|
current = acpi_create_madt_lapic_nmis(current);
|
||||||
|
@ -227,3 +227,19 @@ int acpi_create_srat_x2apic(acpi_srat_x2apic_t *x2apic, u32 node, u32 apic)
|
||||||
|
|
||||||
return x2apic->length;
|
return x2apic->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long acpi_arch_fill_madt(acpi_madt_t *madt, unsigned long current)
|
||||||
|
{
|
||||||
|
madt->lapic_addr = cpu_get_lapic_addr();
|
||||||
|
|
||||||
|
if (CONFIG(ACPI_HAVE_PCAT_8259))
|
||||||
|
madt->flags |= 1;
|
||||||
|
|
||||||
|
if (CONFIG(ACPI_COMMON_MADT_LAPIC))
|
||||||
|
current = acpi_create_madt_lapics_with_nmis(current);
|
||||||
|
|
||||||
|
if (CONFIG(ACPI_COMMON_MADT_IOAPIC))
|
||||||
|
current = acpi_create_madt_ioapic_gsi0_default(current);
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
|
@ -1530,6 +1530,7 @@ unsigned long fw_cfg_acpi_tables(unsigned long start);
|
||||||
void preload_acpi_dsdt(void);
|
void preload_acpi_dsdt(void);
|
||||||
unsigned long write_acpi_tables(const unsigned long addr);
|
unsigned long write_acpi_tables(const unsigned long addr);
|
||||||
unsigned long acpi_fill_madt(unsigned long current);
|
unsigned long acpi_fill_madt(unsigned long current);
|
||||||
|
unsigned long acpi_arch_fill_madt(acpi_madt_t *madt, unsigned long current);
|
||||||
|
|
||||||
void acpi_fill_fadt(acpi_fadt_t *fadt);
|
void acpi_fill_fadt(acpi_fadt_t *fadt);
|
||||||
void arch_fill_fadt(acpi_fadt_t *fadt);
|
void arch_fill_fadt(acpi_fadt_t *fadt);
|
||||||
|
@ -1556,12 +1557,10 @@ int acpi_create_cedt_cfmws(acpi_cedt_cfmws_t *cfmws, u64 base_hpa, u64 window_si
|
||||||
u8 eniw, u32 hbig, u16 restriction, u16 qtg_id, const u32 *interleave_target);
|
u8 eniw, u32 hbig, u16 restriction, u16 qtg_id, const u32 *interleave_target);
|
||||||
|
|
||||||
|
|
||||||
unsigned long acpi_create_madt_ioapic_gsi0_default(unsigned long current);
|
|
||||||
int acpi_create_madt_ioapic_from_hw(acpi_madt_ioapic_t *ioapic, u32 addr);
|
int acpi_create_madt_ioapic_from_hw(acpi_madt_ioapic_t *ioapic, u32 addr);
|
||||||
|
|
||||||
unsigned long acpi_create_madt_one_lapic(unsigned long current, u32 cpu, u32 apic);
|
unsigned long acpi_create_madt_one_lapic(unsigned long current, u32 cpu, u32 apic);
|
||||||
|
|
||||||
unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current);
|
|
||||||
unsigned long acpi_create_madt_lapic_nmis(unsigned long current);
|
unsigned long acpi_create_madt_lapic_nmis(unsigned long current);
|
||||||
|
|
||||||
int acpi_create_srat_lapic(acpi_srat_lapic_t *lapic, u8 node, u8 apic);
|
int acpi_create_srat_lapic(acpi_srat_lapic_t *lapic, u8 node, u8 apic);
|
||||||
|
|
Loading…
Reference in New Issue