qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC 40/47] pc: acpi-build: reserve PCIHP MMIO resources


From: Igor Mammedov
Subject: [Qemu-devel] [RFC 40/47] pc: acpi-build: reserve PCIHP MMIO resources
Date: Fri, 19 Dec 2014 02:02:35 +0000

Signed-off-by: Igor Mammedov <address@hidden>
---
 hw/i386/acpi-build.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index ec0aac6..af61b88 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -102,6 +102,8 @@ typedef struct AcpiPmInfo {
     uint16_t cpu_hp_io_len;
     uint16_t mem_hp_io_base;
     uint16_t mem_hp_io_len;
+    uint16_t pcihp_io_base;
+    uint16_t pcihp_io_len;
 } AcpiPmInfo;
 
 typedef struct AcpiMiscInfo {
@@ -179,6 +181,10 @@ static void acpi_get_pm_info(AcpiPmInfo *pm)
     if (piix) {
         obj = piix;
         pm->cpu_hp_io_base = PIIX4_CPU_HOTPLUG_IO_BASE;
+        pm->pcihp_io_base =
+            object_property_get_int(obj, ACPI_PCIHP_IO_BASE_PROP, NULL);
+        pm->pcihp_io_len =
+            object_property_get_int(obj, ACPI_PCIHP_IO_LEN_PROP, NULL);
     }
     if (lpc) {
         obj = lpc;
@@ -694,6 +700,25 @@ build_ssdt(GArray *table_data, GArray *linker,
 
     patch_pci_windows(pci, ssdt_ptr, sizeof(ssdp_misc_aml));
 
+    scope = acpi_scope("\\_SB.PCI0");
+    /* reserve PCIHP resources */
+    if (pm->pcihp_io_len) {
+        dev = acpi_device("PHPR");
+        aml_append(&dev, acpi_name_decl("_HID", acpi_string("PNP0A06")));
+        aml_append(&dev,
+            acpi_name_decl("_UID", acpi_string("PCI Hotplug resources")));
+        /* device present, functioning, decoding, not shown in UI */
+        aml_append(&dev, acpi_name_decl("_STA", acpi_int(0xB)));
+        crs = acpi_resource_template();
+        aml_append(&crs,
+            acpi_io(acpi_decode16, pm->pcihp_io_base, pm->pcihp_io_base,
+                    1, pm->pcihp_io_len)
+        );
+        aml_append(&dev, acpi_name_decl("_CRS", crs));
+        aml_append(&scope, dev);
+    }
+    aml_append(&table_aml, scope);
+
     /*  create S3_ / S4_ / S5_ packages if necessary */
     scope = acpi_scope("\\");
     if (!pm->s3_disabled) {
-- 
1.8.3.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]