diff mbox

[10/11] ACPI: set CPU hotplug io base dynamically

Message ID 1386951736-929-11-git-send-email-imammedo@redhat.com
State New
Headers show

Commit Message

Igor Mammedov Dec. 13, 2013, 4:22 p.m. UTC
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 hw/i386/acpi-build.c  | 6 ++++++
 hw/i386/ssdt-misc.dsl | 1 +
 2 files changed, 7 insertions(+)
diff mbox

Patch

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index befc39f..bfd34d7 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -68,6 +68,7 @@  typedef struct AcpiPmInfo {
     uint32_t gpe0_blk;
     uint32_t gpe0_blk_len;
     uint32_t io_base;
+    uint16_t io_cpu_base;
 } AcpiPmInfo;
 
 typedef struct AcpiMiscInfo {
@@ -169,6 +170,9 @@  static void acpi_get_pm_info(AcpiPmInfo *pm)
                                            NULL);
     pm->gpe0_blk_len = object_property_get_int(obj, ACPI_PM_PROP_GPE0_BLK_LEN,
                                                NULL);
+    pm->io_cpu_base = object_property_get_int(obj,
+                                              ACPI_CPU_HOTPLUG_IO_BASE_PROP,
+                                              NULL);
 }
 
 static void acpi_get_hotplug_info(AcpiMiscInfo *misc)
@@ -712,6 +716,8 @@  build_ssdt(GArray *table_data, GArray *linker,
 
     *(uint16_t *)(ssdt_ptr + *ssdt_isa_pest) =
         cpu_to_le16(misc->pvpanic_port);
+    *(uint16_t *)(ssdt_ptr + *ssdt_cpugpe_port) =
+        cpu_to_le16(pm->io_cpu_base);
 
     {
         GArray *sb_scope = build_alloc_array();
diff --git a/hw/i386/ssdt-misc.dsl b/hw/i386/ssdt-misc.dsl
index ec8893c..bb75b99 100644
--- a/hw/i386/ssdt-misc.dsl
+++ b/hw/i386/ssdt-misc.dsl
@@ -123,6 +123,7 @@  DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC", "BXSSDTSUSP", 0x1)
         Device(CPHD) {
             Name(_HID, EISAID("PNP0C08"))
             Name(CPPL, 32) // cpu-gpe length
+            ACPI_EXTRACT_NAME_WORD_CONST ssdt_cpugpe_port
             Name(CPHP, 0xaf00)
 
             OperationRegion(PRST, SystemIO, CPHP, CPPL)