summaryrefslogtreecommitdiffstats
path: root/src/acpi
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2022-11-12 21:13:45 +0200
committerKyösti Mälkki <kyosti.malkki@gmail.com>2022-11-25 15:01:49 +0000
commit66b5e1b32ddac58b6d4c7679a0ea274041225a24 (patch)
treebb9f21608536b719d7b8dc2aba421dc9f0ce5ddd /src/acpi
parentda1a58a50333d3a9b370a7e18ed4c3b69b17d2ba (diff)
downloadcoreboot-66b5e1b32ddac58b6d4c7679a0ea274041225a24.tar.gz
coreboot-66b5e1b32ddac58b6d4c7679a0ea274041225a24.tar.bz2
coreboot-66b5e1b32ddac58b6d4c7679a0ea274041225a24.zip
ACPI: Use common code for MADT LAPIC NMIs
Use the broadcast ID to deliver LINT1 as NMI to all CPUs, instead of listing individual LAPIC IDs. Change-Id: Iaf714d8c2aabd16c59c3bcebc4a207406fc85ca9 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/69527 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src/acpi')
-rw-r--r--src/acpi/acpi.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c
index 877c47e88330..f6a36f80f08c 100644
--- a/src/acpi/acpi.c
+++ b/src/acpi/acpi.c
@@ -240,6 +240,24 @@ int acpi_create_madt_lx2apic_nmi(acpi_madt_lx2apic_nmi_t *lapic_nmi, u32 cpu,
return lapic_nmi->length;
}
+unsigned long acpi_create_madt_lapics_with_nmis(unsigned long current)
+{
+ const u16 flags = MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH;
+
+ current = acpi_create_madt_lapics(current);
+
+ /* 1: LINT1 connect to NMI */
+ /* create all subtables for processors */
+ current += acpi_create_madt_lapic_nmi((acpi_madt_lapic_nmi_t *)current,
+ ACPI_MADT_LAPIC_NMI_ALL_PROCESSORS, flags, 1);
+
+ if (!CONFIG(XAPIC_ONLY))
+ current += acpi_create_madt_lx2apic_nmi((acpi_madt_lx2apic_nmi_t *)current,
+ ACPI_MADT_LX2APIC_NMI_ALL_PROCESSORS, flags, 1);
+
+ return current;
+}
+
void acpi_create_madt(acpi_madt_t *madt)
{
acpi_header_t *header = &(madt->header);