diff mbox series

[RFC,6/9] hw/acpi: implementmadt_sub[ACPI_APIC_LOCAL_X2APIC_NMI]

Message ID 20190513061913.9284-7-richardw.yang@linux.intel.com
State New
Headers show
Series hw/acpi: make build_madt arch agnostic | expand

Commit Message

Wei Yang May 13, 2019, 6:19 a.m. UTC
Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
---
 hw/i386/acpi-build.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index f48cc5b292..bec0bed53e 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -371,11 +371,24 @@  static void pc_madt_xrupt_override_entry(GArray *entry, void *opaque)
     }
 }
 
+static void pc_madt_x2apic_nmi_entry(GArray *entry, void *opaque)
+{
+    AcpiMadtLocalX2ApicNmi *local_nmi;
+
+    local_nmi = acpi_data_push(entry, sizeof *local_nmi);
+    local_nmi->type   = ACPI_APIC_LOCAL_X2APIC_NMI;
+    local_nmi->length = sizeof(*local_nmi);
+    local_nmi->uid    = 0xFFFFFFFF; /* all processors */
+    local_nmi->flags  = cpu_to_le16(0);
+    local_nmi->lint   = 1; /* ACPI_LINT1 */
+}
+
 madt_operations i386_madt_sub = {
     [ACPI_APIC_PROCESSOR] = pc_madt_apic_entry,
     [ACPI_APIC_LOCAL_X2APIC] = pc_madt_x2apic_entry,
     [ACPI_APIC_IO] = pc_madt_io_entry,
     [ACPI_APIC_XRUPT_OVERRIDE] = pc_madt_xrupt_override_entry,
+    [ACPI_APIC_LOCAL_X2APIC_NMI] = pc_madt_x2apic_nmi_entry,
 };
 
 static void
@@ -424,14 +437,7 @@  build_madt(GArray *table_data, BIOSLinker *linker, PCMachineState *pcms)
     }
 
     if (x2apic_mode) {
-        AcpiMadtLocalX2ApicNmi *local_nmi;
-
-        local_nmi = acpi_data_push(table_data, sizeof *local_nmi);
-        local_nmi->type   = ACPI_APIC_LOCAL_X2APIC_NMI;
-        local_nmi->length = sizeof(*local_nmi);
-        local_nmi->uid    = 0xFFFFFFFF; /* all processors */
-        local_nmi->flags  = cpu_to_le16(0);
-        local_nmi->lint   = 1; /* ACPI_LINT1 */
+        adevc->madt_sub[ACPI_APIC_LOCAL_X2APIC_NMI](table_data, NULL);
     } else {
         AcpiMadtLocalNmi *local_nmi;