summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2022-12-02 13:17:39 +0100
committerFelix Held <felix-coreboot@felixheld.de>2022-12-06 17:44:20 +0000
commitbc8f859b2dae866817439e52eef23c0ee17cf921 (patch)
tree933ac9ca7b78ac74e2cdea5be104f9838ea30b90 /src
parent8a3e2b836435f34a1031de190f48f02a8daf26db (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.c8
-rw-r--r--src/include/acpi/acpi.h2
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);