diff options
author | Arthur Heymans <arthur@aheymans.xyz> | 2022-12-02 13:17:39 +0100 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2022-12-06 17:44:20 +0000 |
commit | bc8f859b2dae866817439e52eef23c0ee17cf921 (patch) | |
tree | 933ac9ca7b78ac74e2cdea5be104f9838ea30b90 /src | |
parent | 8a3e2b836435f34a1031de190f48f02a8daf26db (diff) |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/acpi/acpi.c | 8 | ||||
-rw-r--r-- | src/include/acpi/acpi.h | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 899d0f8813..04a59b1767 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -898,6 +898,14 @@ unsigned long acpi_create_dmar_ds_ioapic(unsigned long current, 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, u8 enumeration_id, u8 bus, u8 dev, u8 fn) { diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h index 57dbc65160..f66f054b82 100644 --- a/src/include/acpi/acpi.h +++ b/src/include/acpi/acpi.h @@ -1432,6 +1432,8 @@ unsigned long acpi_create_dmar_ds_pci(unsigned long current, unsigned long acpi_create_dmar_ds_ioapic(unsigned long current, u8 enumeration_id, 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, u8 enumeration_id, u8 bus, u8 dev, u8 fn); |