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>
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c
index 877c47e..f6a36f8 100644
--- a/src/acpi/acpi.c
+++ b/src/acpi/acpi.c
@@ -240,6 +240,24 @@
 	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);