[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 21/52] pc: acpi-build: drop template patching
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH v3 21/52] pc: acpi-build: drop template patching and create PCI bus tree dynamically |
Date: |
Tue, 17 Feb 2015 20:39:03 +0100 |
On Mon, Feb 09, 2015 at 10:53:43AM +0000, Igor Mammedov wrote:
> 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 <address@hidden>
Some comments below, this looks nice.
However, something strange is going on.
This looks like it should produce identical
code to what was there, but in fact your previous
patch pc: acpi-build: simplify PCI bus tree generation
changes SSDT, then this patch changes it back to
what it was.
I'm confused by this. Can't refactoring be done without changing the
output back and forth, somehow?
> ---
> hw/i386/Makefile.objs | 6 +-
> hw/i386/acpi-build.c | 207 +++++++++++---------------------
> hw/i386/ssdt-pcihp.dsl | 100 ----------------
> hw/i386/ssdt-pcihp.hex.generated | 251
> ---------------------------------------
> 4 files changed, 72 insertions(+), 492 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 2b678ef..4509cd1 100644
> --- a/hw/i386/Makefile.objs
> +++ b/hw/i386/Makefile.objs
> @@ -8,10 +8,8 @@ obj-$(CONFIG_XEN) += ../xenpv/ xen/
> obj-y += kvmvapic.o
> obj-y += acpi-build.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 bdc343f..b6626f5 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -525,29 +525,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 */
> @@ -560,7 +537,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
> @@ -581,43 +557,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.
> */
> @@ -648,46 +587,30 @@ 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(Aml *method, int slot)
> {
> - GArray *ifctx;
> + Aml *if_ctx;
> + int32_t devfn = PCI_DEVFN(slot, 0);
>
> - 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 */
> -
> - /* Pack it up */
> - build_package(ifctx, 0xA0 /* IfOp */);
> - build_append_array(method, ifctx);
> - build_free_array(ifctx);
> + if_ctx = aml_if(aml_and(aml_arg(0), aml_int(0x1U << slot)));
> + aml_append(if_ctx, aml_notify(aml_name("S%.02X", devfn), aml_arg(1)));
> + aml_append(method, if_ctx);
> }
>
> -static void build_append_pci_bus_devices(GArray *parent_scope, PCIBus *bus,
> +static void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus,
> bool pcihp_bridge_en)
> {
> - GArray *bus_table = build_alloc_array();
> - GArray *method = NULL;
> + Aml *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);
> - } else {
> - build_append_namestring(bus_table, "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(parent_scope, aml_name_decl("BSEL", aml_int(bsel_val)));
> + notify_method = aml_method("DVNT", 2);
> }
>
> for (i = 0; i < ARRAY_SIZE(bus->devices); i += PCI_FUNC_MAX) {
> @@ -699,15 +622,21 @@ 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 = aml_device("S%.02X", PCI_DEVFN(slot, 0));
> + aml_append(dev, aml_name_decl("_SUN", aml_int(slot)));
> + aml_append(dev, aml_name_decl("_ADR", aml_int(slot << 16)));
> + method = aml_method("_EJ0", 1);
> + aml_append(method,
> + aml_call2("PCEJ", aml_name("BSEL"), aml_name("_SUN"))
> + );
> + aml_append(dev, method);
> + aml_append(parent_scope, dev);
> +
> + build_append_pcihp_notify_entry(notify_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);
> + dev = aml_device("S%.02X", PCI_DEVFN(slot, 0));
> + aml_append(dev, aml_name_decl("_ADR", aml_int(slot << 16)));
> + aml_append(parent_scope, dev);
> }
> continue;
> }
> @@ -723,32 +652,40 @@ static void build_append_pci_bus_devices(GArray
> *parent_scope, PCIBus *bus,
> bridge_in_acpi = pc->is_bridge && pcihp_bridge_en &&
> !DEVICE(pdev)->hotplugged;
>
> + dev = aml_device("S%.02X", PCI_DEVFN(slot, 0));
> + aml_append(dev, aml_name_decl("_ADR", aml_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;
> }
I dislike this style, where 0 is set, then over-written.
Please do
if (cond) {
s = 3;
} else {
s = 0;
}
> +
> + method = aml_method("_S1D", 0);
> + aml_append(method, aml_return(aml_int(0)));
> + aml_append(dev, method);
> +
> + method = aml_method("_S2D", 0);
> + aml_append(method, aml_return(aml_int(0)));
> + aml_append(dev, method);
> +
> + method = aml_method("_S3D", 0);
> + aml_append(method, aml_return(aml_int(s3d)));
> + aml_append(dev, method);
> } else if (dc->hotpluggable && !bridge_in_acpi) {
> - 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, aml_name_decl("_SUN", aml_int(slot)));
> +
> + method = aml_method("_EJ0", 1);
> + aml_append(method,
> + aml_call2("PCEJ", aml_name("BSEL"), aml_name("_SUN"))
> + );
> + aml_append(dev, method);
>
> if (bsel) {
> - build_append_pcihp_notify_entry(method, slot);
> + build_append_pcihp_notify_entry(notify_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);
> -
> /* When hotplug for bridges is enabled, bridges that are
> * described in ACPI separately aren't themselves hot-pluggable.
> * Hotplugged bridges *are* hot-pluggable.
> @@ -756,47 +693,42 @@ static void build_append_pci_bus_devices(GArray
> *parent_scope, PCIBus *bus,
> if (bridge_in_acpi) {
> 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(parent_scope, dev);
> }
>
> if (bsel) {
> - build_append_and_cleanup_method(bus_table, method);
> + aml_append(parent_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 = aml_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, aml_store(aml_int(bsel_val), aml_name("BNUM")));
> + aml_append(method,
> + aml_call2("DVNT", aml_name("PCIU"), aml_int(1) /* Device Check
> */)
> + );
> + aml_append(method,
> + aml_call2("DVNT", aml_name("PCID"), aml_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, aml_name("^S%.02X.PCNT", devfn));
> }
> }
> -
> - 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);
> + aml_append(parent_scope, method);
> }
>
> static void patch_pci_windows(PcPciInfo *pci, uint8_t *start, unsigned size)
> @@ -943,9 +875,10 @@ build_ssdt(Aml *table_data,
> }
>
> if (bus) {
> + Aml *scope = aml_scope("PCI0");
> /* Scan all PCI buses. Generate tables to support hotplug. */
> - build_append_pci_bus_devices(sb_scope->buf, bus,
> - pm->pcihp_bridge_en);
> + build_append_pci_bus_devices(scope, bus,
> pm->pcihp_bridge_en);
> + aml_append(sb_scope, scope);
> }
> }
> aml_append(ssdt, sb_scope);
> 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
Pls don't send generated file patches.
Just note it should be removed in comment, I'll do it.
> +++ /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
- [Qemu-devel] [PATCH v3 13/52] acpi: extend build_append_{value|int}() to support 64-bit values, (continued)
- [Qemu-devel] [PATCH v3 13/52] acpi: extend build_append_{value|int}() to support 64-bit values, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 12/52] acpi: add aml_name() & aml_name_decl() term, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 19/52] acpi: add aml_notify() term, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 15/52] acpi: add aml_return() term, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 14/52] acpi: add aml_int() term, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 20/52] acpi: add aml_call1(), aml_call2(), aml_call3(), aml_call4() helpers, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 17/52] acpi: add aml_store() term, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 22/52] acpi: add aml_package() term, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 18/52] acpi: add aml_and() term, Igor Mammedov, 2015/02/09
- [Qemu-devel] [PATCH v3 21/52] pc: acpi-build: drop template patching and create PCI bus tree dynamically, Igor Mammedov, 2015/02/09
- Re: [Qemu-devel] [PATCH v3 21/52] pc: acpi-build: drop template patching and create PCI bus tree dynamically,
Michael S. Tsirkin <=
- [Qemu-devel] [PATCH v3 23/52] pc: acpi-build: drop unsupported PM1b_CNT.SLP_TYP, Igor Mammedov, 2015/02/09
[Qemu-devel] [PATCH v3 25/52] acpi: add aml_buffer() term, Igor Mammedov, 2015/02/09
[Qemu-devel] [PATCH v3 28/52] acpi: include PkgLength size only when requested, Igor Mammedov, 2015/02/09
[Qemu-devel] [PATCH v3 24/52] pc: acpi-build: generate _S[345] packages dynamically, Igor Mammedov, 2015/02/09