acpi/acpi.c: Add a method to generate IOAPIC DMAR entries from hw

This reads back the ioapic id from hardware.

Change-Id: I214557bbe963d1086f35f96efb1cb47950099eb3
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70267
Reviewed-by: Jonathan Zhang <jonzhang@fb.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Arthur Heymans 2022-12-02 13:17:39 +01:00 committed by Felix Held
parent 8a3e2b8364
commit bc8f859b2d
2 changed files with 10 additions and 0 deletions

View File

@ -898,6 +898,14 @@ unsigned long acpi_create_dmar_ds_ioapic(unsigned long current,
SCOPE_IOAPIC, enumeration_id, bus, dev, fn); SCOPE_IOAPIC, enumeration_id, bus, dev, fn);
} }
unsigned long acpi_create_dmar_ds_ioapic_from_hw(unsigned long current,
u32 addr, u8 bus, u8 dev, u8 fn)
{
u8 enumeration_id = get_ioapic_id((void *)(uintptr_t)addr);
return acpi_create_dmar_ds(current,
SCOPE_IOAPIC, enumeration_id, bus, dev, fn);
}
unsigned long acpi_create_dmar_ds_msi_hpet(unsigned long current, unsigned long acpi_create_dmar_ds_msi_hpet(unsigned long current,
u8 enumeration_id, u8 bus, u8 dev, u8 fn) u8 enumeration_id, u8 bus, u8 dev, u8 fn)
{ {

View File

@ -1432,6 +1432,8 @@ unsigned long acpi_create_dmar_ds_pci(unsigned long current,
unsigned long acpi_create_dmar_ds_ioapic(unsigned long current, unsigned long acpi_create_dmar_ds_ioapic(unsigned long current,
u8 enumeration_id, u8 enumeration_id,
u8 bus, u8 dev, u8 fn); u8 bus, u8 dev, u8 fn);
unsigned long acpi_create_dmar_ds_ioapic_from_hw(unsigned long current,
u32 addr, u8 bus, u8 dev, u8 fn);
unsigned long acpi_create_dmar_ds_msi_hpet(unsigned long current, unsigned long acpi_create_dmar_ds_msi_hpet(unsigned long current,
u8 enumeration_id, u8 enumeration_id,
u8 bus, u8 dev, u8 fn); u8 bus, u8 dev, u8 fn);