[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 40/47] pc: acpi-build: reserve PCIHP MMIO resourc
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH v2 40/47] pc: acpi-build: reserve PCIHP MMIO resources |
Date: |
Thu, 22 Jan 2015 14:50:24 +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 b26bc6d..a09bf28 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -105,6 +105,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 {
@@ -182,6 +184,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;
@@ -700,6 +706,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
- [Qemu-devel] [PATCH v2 34/47] pc: acpi-build: create CPU hotplug IO region dynamically, (continued)
- [Qemu-devel] [PATCH v2 34/47] pc: acpi-build: create CPU hotplug IO region dynamically, Igor Mammedov, 2015/01/22
- [Qemu-devel] [PATCH v2 37/47] pc: acpi-build: create memory hotplug IO region dynamically, Igor Mammedov, 2015/01/22
- [Qemu-devel] [PATCH v2 30/47] acpi: add acpi_equal() term, Igor Mammedov, 2015/01/22
- [Qemu-devel] [PATCH v2 38/47] acpi: add acpi_word_bus_number(), acpi_word_io(), acpi_dword_memory(), acpi_qword_memory() terms, Igor Mammedov, 2015/01/22
- [Qemu-devel] [PATCH v2 39/47] pc: pcihp: expose MMIO base and len as properties, Igor Mammedov, 2015/01/22
- [Qemu-devel] [PATCH v2 42/47] acpi: add acpi_def_block() term, Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 40/47] pc: acpi-build: reserve PCIHP MMIO resources,
Igor Mammedov <=
[Qemu-devel] [PATCH v2 41/47] pc: acpi-build: create PCI0._CRS dynamically, Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 44/47] pc: acpi-build: drop remaining ssdt_misc template and use acpi_def_block(), Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 45/47] acpi: add acpi_iqr_no_flags() term, Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 46/47] pc: export applesmc IO port/len, Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 43/47] pc: acpi-build: prepare to make ACPI tables blob opaque for table building functions, Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 47/47] pc: acpi-build: drop template patching and create Device(SMC) dynamically, Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 17/47] acpi: add acpi_package() term, Igor Mammedov, 2015/01/22
[Qemu-devel] [PATCH v2 06/47] acpi: add acpi_name() & acpi_name_decl() term, Igor Mammedov, 2015/01/22