From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, drjones@redhat.com,
claudio.fontana@huawei.com, mst@redhat.com
Subject: [Qemu-devel] [RFC 16/47] pc: acpi-build: drop template patching and create PCI bus tree dinamically
Date: Fri, 19 Dec 2014 02:02:11 +0000 [thread overview]
Message-ID: <1418954562-13716-17-git-send-email-imammedo@redhat.com> (raw)
In-Reply-To: <1418954562-13716-1-git-send-email-imammedo@redhat.com>
Replace AML template patching with direct composing
of PCI device entries in C. It allows to simplify
PCI tree generation further and saves us about 400LOC
scattered through different files, confining tree
generation to one C function which is much easier
to deal with.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/i386/Makefile.objs | 6 +-
hw/i386/acpi-build.c | 223 +++++++++++++---------------------
hw/i386/ssdt-pcihp.dsl | 100 ----------------
hw/i386/ssdt-pcihp.hex.generated | 251 ---------------------------------------
4 files changed, 83 insertions(+), 497 deletions(-)
delete mode 100644 hw/i386/ssdt-pcihp.dsl
delete mode 100644 hw/i386/ssdt-pcihp.hex.generated
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
index 9d419ad..d8dd99f 100644
--- a/hw/i386/Makefile.objs
+++ b/hw/i386/Makefile.objs
@@ -9,10 +9,8 @@ obj-y += kvmvapic.o
obj-y += acpi-build.o
obj-y += bios-linker-loader.o
hw/i386/acpi-build.o: hw/i386/acpi-build.c hw/i386/acpi-dsdt.hex \
- hw/i386/ssdt-proc.hex hw/i386/ssdt-pcihp.hex hw/i386/ssdt-misc.hex \
- hw/i386/acpi-dsdt.hex hw/i386/q35-acpi-dsdt.hex \
- hw/i386/q35-acpi-dsdt.hex hw/i386/ssdt-mem.hex \
- hw/i386/ssdt-tpm.hex
+ hw/i386/ssdt-proc.hex hw/i386/ssdt-misc.hex hw/i386/q35-acpi-dsdt.hex \
+ hw/i386/ssdt-mem.hex hw/i386/ssdt-tpm.hex
iasl-option=$(shell if test -z "`$(1) $(2) 2>&1 > /dev/null`" \
; then echo "$(2)"; else echo "$(3)"; fi ;)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index a893f5e..7d32408 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -523,29 +523,6 @@ static inline char acpi_get_hex(uint32_t val)
#define ACPI_PROC_SIZEOF (*ssdt_proc_end - *ssdt_proc_start)
#define ACPI_PROC_AML (ssdp_proc_aml + *ssdt_proc_start)
-/* 0x5B 0x82 DeviceOp PkgLength NameString */
-#define ACPI_PCIHP_OFFSET_HEX (*ssdt_pcihp_name - *ssdt_pcihp_start + 1)
-#define ACPI_PCIHP_OFFSET_ID (*ssdt_pcihp_id - *ssdt_pcihp_start)
-#define ACPI_PCIHP_OFFSET_ADR (*ssdt_pcihp_adr - *ssdt_pcihp_start)
-#define ACPI_PCIHP_OFFSET_EJ0 (*ssdt_pcihp_ej0 - *ssdt_pcihp_start)
-#define ACPI_PCIHP_SIZEOF (*ssdt_pcihp_end - *ssdt_pcihp_start)
-#define ACPI_PCIHP_AML (ssdp_pcihp_aml + *ssdt_pcihp_start)
-
-#define ACPI_PCINOHP_OFFSET_HEX (*ssdt_pcinohp_name - *ssdt_pcinohp_start + 1)
-#define ACPI_PCINOHP_OFFSET_ADR (*ssdt_pcinohp_adr - *ssdt_pcinohp_start)
-#define ACPI_PCINOHP_SIZEOF (*ssdt_pcinohp_end - *ssdt_pcinohp_start)
-#define ACPI_PCINOHP_AML (ssdp_pcihp_aml + *ssdt_pcinohp_start)
-
-#define ACPI_PCIVGA_OFFSET_HEX (*ssdt_pcivga_name - *ssdt_pcivga_start + 1)
-#define ACPI_PCIVGA_OFFSET_ADR (*ssdt_pcivga_adr - *ssdt_pcivga_start)
-#define ACPI_PCIVGA_SIZEOF (*ssdt_pcivga_end - *ssdt_pcivga_start)
-#define ACPI_PCIVGA_AML (ssdp_pcihp_aml + *ssdt_pcivga_start)
-
-#define ACPI_PCIQXL_OFFSET_HEX (*ssdt_pciqxl_name - *ssdt_pciqxl_start + 1)
-#define ACPI_PCIQXL_OFFSET_ADR (*ssdt_pciqxl_adr - *ssdt_pciqxl_start)
-#define ACPI_PCIQXL_SIZEOF (*ssdt_pciqxl_end - *ssdt_pciqxl_start)
-#define ACPI_PCIQXL_AML (ssdp_pcihp_aml + *ssdt_pciqxl_start)
-
#include "hw/i386/ssdt-mem.hex"
/* 0x5B 0x82 DeviceOp PkgLength NameString DimmID */
@@ -558,7 +535,6 @@ static inline char acpi_get_hex(uint32_t val)
#define ACPI_SSDT_HEADER_LENGTH 36
#include "hw/i386/ssdt-misc.hex"
-#include "hw/i386/ssdt-pcihp.hex"
#include "hw/i386/ssdt-tpm.hex"
static void
@@ -579,43 +555,6 @@ build_append_notify_method(GArray *device, const char *name,
build_append_and_cleanup_method(device, method);
}
-static void patch_pcihp(int slot, uint8_t *ssdt_ptr)
-{
- unsigned devfn = PCI_DEVFN(slot, 0);
-
- ssdt_ptr[ACPI_PCIHP_OFFSET_HEX] = acpi_get_hex(devfn >> 4);
- ssdt_ptr[ACPI_PCIHP_OFFSET_HEX + 1] = acpi_get_hex(devfn);
- ssdt_ptr[ACPI_PCIHP_OFFSET_ID] = slot;
- ssdt_ptr[ACPI_PCIHP_OFFSET_ADR + 2] = slot;
-}
-
-static void patch_pcinohp(int slot, uint8_t *ssdt_ptr)
-{
- unsigned devfn = PCI_DEVFN(slot, 0);
-
- ssdt_ptr[ACPI_PCINOHP_OFFSET_HEX] = acpi_get_hex(devfn >> 4);
- ssdt_ptr[ACPI_PCINOHP_OFFSET_HEX + 1] = acpi_get_hex(devfn);
- ssdt_ptr[ACPI_PCINOHP_OFFSET_ADR + 2] = slot;
-}
-
-static void patch_pcivga(int slot, uint8_t *ssdt_ptr)
-{
- unsigned devfn = PCI_DEVFN(slot, 0);
-
- ssdt_ptr[ACPI_PCIVGA_OFFSET_HEX] = acpi_get_hex(devfn >> 4);
- ssdt_ptr[ACPI_PCIVGA_OFFSET_HEX + 1] = acpi_get_hex(devfn);
- ssdt_ptr[ACPI_PCIVGA_OFFSET_ADR + 2] = slot;
-}
-
-static void patch_pciqxl(int slot, uint8_t *ssdt_ptr)
-{
- unsigned devfn = PCI_DEVFN(slot, 0);
-
- ssdt_ptr[ACPI_PCIQXL_OFFSET_HEX] = acpi_get_hex(devfn >> 4);
- ssdt_ptr[ACPI_PCIQXL_OFFSET_HEX + 1] = acpi_get_hex(devfn);
- ssdt_ptr[ACPI_PCIQXL_OFFSET_ADR + 2] = slot;
-}
-
/* Assign BSEL property to all buses. In the future, this can be changed
* to only assign to buses that support hotplug.
*/
@@ -646,46 +585,36 @@ static void acpi_set_pci_info(void)
}
}
-static void build_append_pcihp_notify_entry(GArray *method, int slot)
+static void build_append_pcihp_notify_entry(AcpiAml *method, int slot)
{
- GArray *ifctx;
-
- ifctx = build_alloc_array();
- build_append_byte(ifctx, 0x7B); /* AndOp */
- build_append_byte(ifctx, 0x68); /* Arg0Op */
- build_append_int(ifctx, 0x1U << slot);
- build_append_byte(ifctx, 0x00); /* NullName */
- build_append_byte(ifctx, 0x86); /* NotifyOp */
- build_append_namestring(ifctx, "S%.02X", PCI_DEVFN(slot, 0));
- build_append_byte(ifctx, 0x69); /* Arg1Op */
+ AcpiAml if_ctx;
+ int32_t devfn = PCI_DEVFN(slot, 0);
- /* Pack it up */
- build_package(ifctx, 0xA0 /* IfOp */);
- build_append_array(method, ifctx);
- build_free_array(ifctx);
+ if_ctx = acpi_if(acpi_and(acpi_arg0(), acpi_int(0x1U << slot)));
+ aml_append(&if_ctx, acpi_notify(acpi_name("S%.02X", devfn), acpi_arg1()));
+ aml_append(method, if_ctx);
}
-static void build_append_pci_bus_devices(GArray *parent_scope, PCIBus *bus,
+static void build_append_pci_bus_devices(AcpiAml *parent_scope, PCIBus *bus,
bool pcihp_bridge_en)
{
- GArray *bus_table = build_alloc_array();
- GArray *method = NULL;
+ AcpiAml scope, dev, notify_method, method;
QObject *bsel;
PCIBus *sec;
int i;
if (bus->parent_dev) {
- build_append_namestring(bus_table, "S%.02X_", bus->parent_dev->devfn);
+ scope = acpi_scope("S%.02X_", bus->parent_dev->devfn);
} else {
- build_append_namestring(bus_table, "PCI0");
+ scope = acpi_scope("PCI0");
}
bsel = object_property_get_qobject(OBJECT(bus), ACPI_PCIHP_PROP_BSEL, NULL);
if (bsel) {
- build_append_byte(bus_table, 0x08); /* NameOp */
- build_append_namestring(bus_table, "BSEL");
- build_append_int(bus_table, qint_get_int(qobject_to_qint(bsel)));
- method = build_alloc_method("DVNT", 2);
+ int64_t bsel_val = qint_get_int(qobject_to_qint(bsel));
+
+ aml_append(&scope, acpi_name_decl("BSEL", acpi_int(bsel_val)));
+ notify_method = acpi_method("DVNT", 2);
}
for (i = 0; i < ARRAY_SIZE(bus->devices); i += PCI_FUNC_MAX) {
@@ -696,11 +625,17 @@ static void build_append_pci_bus_devices(GArray *parent_scope, PCIBus *bus,
if (!pdev) {
if (bsel) {
- void *pcihp = acpi_data_push(bus_table, ACPI_PCIHP_SIZEOF);
- memcpy(pcihp, ACPI_PCIHP_AML, ACPI_PCIHP_SIZEOF);
- patch_pcihp(slot, pcihp);
-
- build_append_pcihp_notify_entry(method, slot);
+ dev = acpi_device("S%.02X", PCI_DEVFN(slot, 0));
+ aml_append(&dev, acpi_name_decl("_SUN", acpi_int(slot)));
+ aml_append(&dev, acpi_name_decl("_ADR", acpi_int(slot << 16)));
+ method = acpi_method("_EJ0", 1);
+ aml_append(&method,
+ acpi_call2("PCEJ", acpi_name("BSEL"), acpi_name("_SUN"))
+ );
+ aml_append(&dev, method);
+ aml_append(&scope, dev);
+
+ build_append_pcihp_notify_entry(¬ify_method, slot);
}
continue;
}
@@ -712,76 +647,84 @@ static void build_append_pci_bus_devices(GArray *parent_scope, PCIBus *bus,
continue;
}
+ dev = acpi_device("S%.02X", PCI_DEVFN(slot, 0));
+ aml_append(&dev, acpi_name_decl("_ADR", acpi_int(slot << 16)));
+
if (pc->class_id == PCI_CLASS_DISPLAY_VGA) {
+ int s3d = 0;
if (object_dynamic_cast(OBJECT(pdev), "qxl-vga")) {
- void *pcihp = acpi_data_push(bus_table,
- ACPI_PCIQXL_SIZEOF);
- memcpy(pcihp, ACPI_PCIQXL_AML, ACPI_PCIQXL_SIZEOF);
- patch_pciqxl(slot, pcihp);
- } else {
- void *pcihp = acpi_data_push(bus_table,
- ACPI_PCIVGA_SIZEOF);
- memcpy(pcihp, ACPI_PCIVGA_AML, ACPI_PCIVGA_SIZEOF);
- patch_pcivga(slot, pcihp);
+ s3d = 3;
}
+
+ method = acpi_method("_S1D", 0);
+ aml_append(&method, acpi_return(acpi_int(0)));
+ aml_append(&dev, method);
+
+ method = acpi_method("_S2D", 0);
+ aml_append(&method, acpi_return(acpi_int(0)));
+ aml_append(&dev, method);
+
+ method = acpi_method("_S3D", 0);
+ aml_append(&method, acpi_return(acpi_int(s3d)));
+ aml_append(&dev, method);
} else if (dc->hotpluggable && !pc->is_bridge) {
- void *pcihp = acpi_data_push(bus_table, ACPI_PCIHP_SIZEOF);
- memcpy(pcihp, ACPI_PCIHP_AML, ACPI_PCIHP_SIZEOF);
- patch_pcihp(slot, pcihp);
+ aml_append(&dev, acpi_name_decl("_SUN", acpi_int(slot)));
+
+ method = acpi_method("_EJ0", 1);
+ aml_append(&method,
+ acpi_call2("PCEJ", acpi_name("BSEL"), acpi_name("_SUN"))
+ );
+ aml_append(&dev, method);
if (bsel) {
- build_append_pcihp_notify_entry(method, slot);
+ build_append_pcihp_notify_entry(¬ify_method, slot);
}
} else {
- void *pcihp = acpi_data_push(bus_table, ACPI_PCINOHP_SIZEOF);
- memcpy(pcihp, ACPI_PCINOHP_AML, ACPI_PCINOHP_SIZEOF);
- patch_pcinohp(slot, pcihp);
-
if (pc->is_bridge) {
PCIBus *sec_bus = pci_bridge_get_sec_bus(PCI_BRIDGE(pdev));
- build_append_pci_bus_devices(bus_table, sec_bus,
- pcihp_bridge_en);
+ build_append_pci_bus_devices(&dev, sec_bus, pcihp_bridge_en);
}
}
+ aml_append(&scope, dev);
}
if (bsel) {
- build_append_and_cleanup_method(bus_table, method);
+ aml_append(&scope, notify_method);
}
/* Append PCNT method to notify about events on local and child buses.
* Add unconditionally for root since DSDT expects it.
*/
- method = build_alloc_method("PCNT", 0);
+ method = acpi_method("PCNT", 0);
/* If bus supports hotplug select it and notify about local events */
if (bsel) {
- build_append_byte(method, 0x70); /* StoreOp */
- build_append_int(method, qint_get_int(qobject_to_qint(bsel)));
- build_append_namestring(method, "BNUM");
- build_append_namestring(method, "DVNT");
- build_append_namestring(method, "PCIU");
- build_append_int(method, 1); /* Device Check */
- build_append_namestring(method, "DVNT");
- build_append_namestring(method, "PCID");
- build_append_int(method, 3); /* Eject Request */
+ int64_t bsel_val = qint_get_int(qobject_to_qint(bsel));
+ aml_append(&method, acpi_store(acpi_int(bsel_val), acpi_name("BNUM")));
+ aml_append(&method,
+ acpi_call2("DVNT", acpi_name("PCIU"),
+ acpi_int(1) /* Device Check */)
+ );
+ aml_append(&method,
+ acpi_call2("DVNT", acpi_name("PCID"),
+ acpi_int(3)/* Eject Request */)
+ );
}
/* Notify about child bus events in any case */
if (pcihp_bridge_en) {
QLIST_FOREACH(sec, &bus->child, sibling) {
- build_append_namestring(method, "^S%.02X.PCNT",
- sec->parent_dev->devfn);
+ int32_t devfn = sec->parent_dev->devfn;
+
+ aml_append(&method, acpi_name("^S%.02X.PCNT", devfn));
}
}
+ aml_append(&scope, method);
- build_append_and_cleanup_method(bus_table, method);
-
- build_package(bus_table, 0x10); /* ScopeOp */
- build_append_array(parent_scope, bus_table);
- build_free_array(bus_table);
+ /* Append generated BUS scope object to parent scope */
+ aml_append(parent_scope, scope);
}
static void patch_pci_windows(PcPciInfo *pci, uint8_t *start, unsigned size)
@@ -809,6 +752,7 @@ build_ssdt(GArray *table_data, GArray *linker,
uint32_t nr_mem = machine->ram_slots;
unsigned acpi_cpus = guest_info->apic_id_limit;
int ssdt_start = table_data->len;
+ AcpiAml table_aml = { .buf = table_data };
uint8_t *ssdt_ptr;
int i;
@@ -839,14 +783,11 @@ build_ssdt(GArray *table_data, GArray *linker,
ssdt_mctrl_nr_slots[0], 32, nr_mem);
{
- GArray *sb_scope = build_alloc_array();
- uint8_t op = 0x10; /* ScopeOp */
-
- build_append_namestring(sb_scope, "_SB");
+ AcpiAml sb_scope = acpi_scope("_SB");
/* build Processor object for each processor */
for (i = 0; i < acpi_cpus; i++) {
- uint8_t *proc = acpi_data_push(sb_scope, ACPI_PROC_SIZEOF);
+ uint8_t *proc = acpi_data_push(sb_scope.buf, ACPI_PROC_SIZEOF);
memcpy(proc, ACPI_PROC_AML, ACPI_PROC_SIZEOF);
proc[ACPI_PROC_OFFSET_CPUHEX] = acpi_get_hex(i >> 4);
proc[ACPI_PROC_OFFSET_CPUHEX+1] = acpi_get_hex(i);
@@ -858,11 +799,11 @@ build_ssdt(GArray *table_data, GArray *linker,
* Method(NTFY, 2) {If (LEqual(Arg0, 0x00)) {Notify(CP00, Arg1)} ...}
*/
/* Arg0 = Processor ID = APIC ID */
- build_append_notify_method(sb_scope, "NTFY", "CP%0.02X", acpi_cpus);
+ build_append_notify_method(sb_scope.buf, "NTFY", "CP%0.02X", acpi_cpus);
/* build "Name(CPON, Package() { One, One, ..., Zero, Zero, ... })" */
- build_append_byte(sb_scope, 0x08); /* NameOp */
- build_append_namestring(sb_scope, "CPON");
+ build_append_byte(sb_scope.buf, 0x08); /* NameOp */
+ build_append_namestring(sb_scope.buf, "CPON");
{
GArray *package = build_alloc_array();
@@ -887,7 +828,7 @@ build_ssdt(GArray *table_data, GArray *linker,
}
build_package(package, op);
- build_append_array(sb_scope, package);
+ build_append_array(sb_scope.buf, package);
build_free_array(package);
}
@@ -896,7 +837,7 @@ build_ssdt(GArray *table_data, GArray *linker,
/* build memory devices */
for (i = 0; i < nr_mem; i++) {
char id[3];
- uint8_t *mem = acpi_data_push(sb_scope, ACPI_MEM_SIZEOF);
+ uint8_t *mem = acpi_data_push(sb_scope.buf, ACPI_MEM_SIZEOF);
snprintf(id, sizeof(id), "%02X", i);
memcpy(mem, ACPI_MEM_AML, ACPI_MEM_SIZEOF);
@@ -907,7 +848,7 @@ build_ssdt(GArray *table_data, GArray *linker,
/* build Method(MEMORY_SLOT_NOTIFY_METHOD, 2) {
* If (LEqual(Arg0, 0x00)) {Notify(MP00, Arg1)} ...
*/
- build_append_notify_method(sb_scope,
+ build_append_notify_method(sb_scope.buf,
stringify(MEMORY_SLOT_NOTIFY_METHOD),
"MP%0.02X", nr_mem);
}
@@ -924,13 +865,11 @@ build_ssdt(GArray *table_data, GArray *linker,
if (bus) {
/* Scan all PCI buses. Generate tables to support hotplug. */
- build_append_pci_bus_devices(sb_scope, bus,
+ build_append_pci_bus_devices(&sb_scope, bus,
pm->pcihp_bridge_en);
}
}
- build_package(sb_scope, op);
- build_append_array(table_data, sb_scope);
- build_free_array(sb_scope);
+ aml_append(&table_aml, sb_scope);
}
build_header(linker, table_data,
diff --git a/hw/i386/ssdt-pcihp.dsl b/hw/i386/ssdt-pcihp.dsl
deleted file mode 100644
index ac91c05..0000000
--- a/hw/i386/ssdt-pcihp.dsl
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-ACPI_EXTRACT_ALL_CODE ssdp_pcihp_aml
-
-DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
-{
-
-/****************************************************************
- * PCI hotplug
- ****************************************************************/
-
- /* Objects supplied by DSDT */
- External(\_SB.PCI0, DeviceObj)
- External(\_SB.PCI0.PCEJ, MethodObj)
- External(BSEL, IntObj)
-
- Scope(\_SB.PCI0) {
-
- /* Bulk generated PCI hotplug devices */
- ACPI_EXTRACT_DEVICE_START ssdt_pcihp_start
- ACPI_EXTRACT_DEVICE_END ssdt_pcihp_end
- ACPI_EXTRACT_DEVICE_STRING ssdt_pcihp_name
-
- // Extract the offsets of the device name, address dword and the slot
- // name byte - we fill them in for each device.
- Device(SAA) {
- ACPI_EXTRACT_NAME_BYTE_CONST ssdt_pcihp_id
- Name(_SUN, 0xAA)
- ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pcihp_adr
- Name(_ADR, 0xAA0000)
- Method(_EJ0, 1) {
- PCEJ(BSEL, _SUN)
- }
- }
-
- ACPI_EXTRACT_DEVICE_START ssdt_pcinohp_start
- ACPI_EXTRACT_DEVICE_END ssdt_pcinohp_end
- ACPI_EXTRACT_DEVICE_STRING ssdt_pcinohp_name
-
- // Extract the offsets of the device name, address dword and the slot
- // name byte - we fill them in for each device.
- Device(SBB) {
- ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pcinohp_adr
- Name(_ADR, 0xAA0000)
- }
-
- ACPI_EXTRACT_DEVICE_START ssdt_pcivga_start
- ACPI_EXTRACT_DEVICE_END ssdt_pcivga_end
- ACPI_EXTRACT_DEVICE_STRING ssdt_pcivga_name
-
- // Extract the offsets of the device name, address dword and the slot
- // name byte - we fill them in for each device.
- Device(SCC) {
- ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pcivga_adr
- Name(_ADR, 0xAA0000)
- Method(_S1D, 0, NotSerialized) {
- Return (0x00)
- }
- Method(_S2D, 0, NotSerialized) {
- Return (0x00)
- }
- Method(_S3D, 0, NotSerialized) {
- Return (0x00)
- }
- }
-
- ACPI_EXTRACT_DEVICE_START ssdt_pciqxl_start
- ACPI_EXTRACT_DEVICE_END ssdt_pciqxl_end
- ACPI_EXTRACT_DEVICE_STRING ssdt_pciqxl_name
-
- // Extract the offsets of the device name, address dword and the slot
- // name byte - we fill them in for each device.
- Device(SDD) {
- ACPI_EXTRACT_NAME_DWORD_CONST ssdt_pciqxl_adr
- Name(_ADR, 0xAA0000)
- Method(_S1D, 0, NotSerialized) {
- Return (0x00)
- }
- Method(_S2D, 0, NotSerialized) {
- Return (0x00)
- }
- Method(_S3D, 0, NotSerialized) {
- Return (0x03) // QXL
- }
- }
- }
-}
diff --git a/hw/i386/ssdt-pcihp.hex.generated b/hw/i386/ssdt-pcihp.hex.generated
deleted file mode 100644
index 72ffa84..0000000
--- a/hw/i386/ssdt-pcihp.hex.generated
+++ /dev/null
@@ -1,251 +0,0 @@
-static unsigned char ssdt_pcihp_name[] = {
-0x34
-};
-static unsigned char ssdt_pcivga_end[] = {
-0x99
-};
-static unsigned char ssdt_pcivga_name[] = {
-0x70
-};
-static unsigned char ssdt_pcihp_adr[] = {
-0x45
-};
-static unsigned char ssdt_pcinohp_end[] = {
-0x6d
-};
-static unsigned char ssdt_pcihp_end[] = {
-0x5c
-};
-static unsigned char ssdt_pciqxl_start[] = {
-0x99
-};
-static unsigned char ssdt_pcinohp_name[] = {
-0x5f
-};
-static unsigned char ssdp_pcihp_aml[] = {
-0x53,
-0x53,
-0x44,
-0x54,
-0xc6,
-0x0,
-0x0,
-0x0,
-0x1,
-0x70,
-0x42,
-0x58,
-0x50,
-0x43,
-0x0,
-0x0,
-0x42,
-0x58,
-0x53,
-0x53,
-0x44,
-0x54,
-0x50,
-0x43,
-0x1,
-0x0,
-0x0,
-0x0,
-0x49,
-0x4e,
-0x54,
-0x4c,
-0x15,
-0x11,
-0x13,
-0x20,
-0x10,
-0x41,
-0xa,
-0x5c,
-0x2e,
-0x5f,
-0x53,
-0x42,
-0x5f,
-0x50,
-0x43,
-0x49,
-0x30,
-0x5b,
-0x82,
-0x29,
-0x53,
-0x41,
-0x41,
-0x5f,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xaa,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xaa,
-0x0,
-0x14,
-0x12,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0x50,
-0x43,
-0x45,
-0x4a,
-0x42,
-0x53,
-0x45,
-0x4c,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0x5b,
-0x82,
-0xf,
-0x53,
-0x42,
-0x42,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xaa,
-0x0,
-0x5b,
-0x82,
-0x2a,
-0x53,
-0x43,
-0x43,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xaa,
-0x0,
-0x14,
-0x8,
-0x5f,
-0x53,
-0x31,
-0x44,
-0x0,
-0xa4,
-0x0,
-0x14,
-0x8,
-0x5f,
-0x53,
-0x32,
-0x44,
-0x0,
-0xa4,
-0x0,
-0x14,
-0x8,
-0x5f,
-0x53,
-0x33,
-0x44,
-0x0,
-0xa4,
-0x0,
-0x5b,
-0x82,
-0x2b,
-0x53,
-0x44,
-0x44,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xaa,
-0x0,
-0x14,
-0x8,
-0x5f,
-0x53,
-0x31,
-0x44,
-0x0,
-0xa4,
-0x0,
-0x14,
-0x8,
-0x5f,
-0x53,
-0x32,
-0x44,
-0x0,
-0xa4,
-0x0,
-0x14,
-0x9,
-0x5f,
-0x53,
-0x33,
-0x44,
-0x0,
-0xa4,
-0xa,
-0x3
-};
-static unsigned char ssdt_pciqxl_adr[] = {
-0xa6
-};
-static unsigned char ssdt_pcinohp_adr[] = {
-0x69
-};
-static unsigned char ssdt_pcivga_adr[] = {
-0x7a
-};
-static unsigned char ssdt_pciqxl_name[] = {
-0x9c
-};
-static unsigned char ssdt_pcivga_start[] = {
-0x6d
-};
-static unsigned char ssdt_pciqxl_end[] = {
-0xc6
-};
-static unsigned char ssdt_pcihp_start[] = {
-0x31
-};
-static unsigned char ssdt_pcihp_id[] = {
-0x3e
-};
-static unsigned char ssdt_pcinohp_start[] = {
-0x5c
-};
--
1.8.3.1
next prev parent reply other threads:[~2014-12-19 2:03 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-19 2:01 [Qemu-devel] [RFC 00/47] ACPI refactoring: replace template patching with C ASL API Igor Mammedov
2014-12-19 2:01 ` [Qemu-devel] [RFC 01/47] acpi: introduce AML composer aml_append() Igor Mammedov
2014-12-19 2:01 ` [Qemu-devel] [RFC 02/47] acpi: add acpi_scope() term Igor Mammedov
2014-12-19 2:01 ` [Qemu-devel] [RFC 03/47] acpi: add acpi_device() term Igor Mammedov
2014-12-19 2:01 ` [Qemu-devel] [RFC 04/47] acpi: add acpi_method() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 05/47] acpi: add acpi_if() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 06/47] acpi: add acpi_name() & acpi_name_decl() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 07/47] acpi: factor out ACPI const int packing out build_append_value() Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 08/47] acpi: extend build_append_{value|int}() to support 64-bit values Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 09/47] acpi: add acpi_int() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 10/47] acpi: add acpi_return() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 11/47] acpi: add acpi_arg0(), acpi_arg1(), acpi_arg2(), acpi_arg3() terms Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 12/47] acpi: add acpi_store() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 13/47] acpi: add acpi_and() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 14/47] acpi: add acpi_notify() term Igor Mammedov
2015-01-19 12:32 ` Paolo Bonzini
2015-01-20 9:40 ` Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 15/47] acpi: add acpi_call1(), acpi_call2(), acpi_call3(), acpi_call4() helpers Igor Mammedov
2014-12-19 2:02 ` Igor Mammedov [this message]
2014-12-19 2:02 ` [Qemu-devel] [RFC 17/47] acpi: add acpi_package() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 18/47] pc: acpi-build: drop unsupported PM1b_CNT.SLP_TYP Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 19/47] pc: acpi-build: generate _S[345] packages dynamically Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 20/47] acpi: add acpi_buffer() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 21/47] acpi: add acpi_resource_template() helper Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 22/47] acpi: add acpi_io() helper Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 23/47] acpi: include PkgLength size only when requested Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 24/47] acpi: add acpi_operation_region() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 25/47] acpi: add acpi_field() & acpi_named_field() terms Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 26/47] acpi: add acpi_local0() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 27/47] acpi: add acpi_string() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 28/47] pc: acpi-build: generate pvpanic device description dynamically Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 29/47] acpi: add acpi_varpackage() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 30/47] acpi: add acpi_equal() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 31/47] acpi: add acpi_processor() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 32/47] acpi: add acpi_eisaid() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 33/47] pc: acpi-build: drop template patching and CPU hotplug objects dynamically Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 34/47] pc: acpi-build: create CPU hotplug IO region dynamically Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 35/47] acpi: add acpi_reserved_field() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 36/47] pc: acpi-build: drop template patching and memory hotplug objects dynamically Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 37/47] pc: acpi-build: create memory hotplug IO region dynamically Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 38/47] acpi: add acpi_word_bus_number(), acpi_word_io(), acpi_dword_memory(), acpi_qword_memory() terms Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 39/47] pc: pcihp: expose MMIO base and len as properties Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 40/47] pc: acpi-build: reserve PCIHP MMIO resources Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 41/47] pc: acpi-build: create PCI0._CRS dynamically Igor Mammedov
2015-01-19 12:42 ` Paolo Bonzini
2015-01-19 21:55 ` Michael S. Tsirkin
2015-01-20 9:37 ` Marcel Apfelbaum
2015-01-20 9:42 ` Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 42/47] acpi: make tables linker-loader available to other targets Igor Mammedov
2015-01-19 12:36 ` Paolo Bonzini
2015-01-19 21:54 ` Michael S. Tsirkin
2015-01-19 22:05 ` Michael S. Tsirkin
2015-01-20 9:43 ` Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 43/47] acpi: add acpi_def_block() term Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 44/47] pc: acpi-build: prepare to make ACPI tables blob opaque for table building functions Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 45/47] pc: acpi-build: drop remaining ssdt_misc template and use acpi_def_block() Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 46/47] pc: acpi: update DSTD blobs Igor Mammedov
2014-12-19 2:02 ` [Qemu-devel] [RFC 47/47] tests: acpi: update reference DSDT/SSDT tables Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1418954562-13716-17-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=claudio.fontana@huawei.com \
--cc=drjones@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).