[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: |
Wed, 18 Feb 2015 12:38:34 +0100 |
On Wed, Feb 18, 2015 at 11:42:15AM +0100, Igor Mammedov wrote:
> On Tue, 17 Feb 2015 20:39:03 +0100
> "Michael S. Tsirkin" <address@hidden> wrote:
>
> > 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?
> just checked with make check ASL diff
> if you you stop when applying patches on this patch and run make check
> you'll get a trivial diff:
>
> @@ -153,7 +153,7 @@ DefinitionBlock ("tests/acpi-test-data/pc/SSDT.aml",
> "SSDT", 1, "BOCHS ", "BXPCS
>
> Method (NTFY, 2, NotSerialized)
> {
> - If (LEqual (Arg0, 0x00))
> + If (LEqual (Arg0, Zero))
> {
> Notify (CP00, Arg1)
> }
> @@ -168,7 +168,7 @@ DefinitionBlock ("tests/acpi-test-data/pc/SSDT.aml",
> "SSDT", 1, "BOCHS ", "BXPCS
> Name (BSEL, Zero)
> Device (S00)
> {
> - Name (_ADR, 0x00000000) // _ADR: Address
> + Name (_ADR, Zero) // _ADR: Address
> }
>
> Device (S10)
>
>
> which is result of switching to aml_int() which encodes Zero opcode
> instead of 0x00 ByteConst.
Right, but if you try before this patch, you see a huge diff.
So this patch mostly cancels the changes you made with
the previous pci rework.
> >
> > > ---
> > > 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 15/52] acpi: add aml_return() term, (continued)
- [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
- [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
[Qemu-devel] [PATCH v3 30/52] acpi: add aml_field() & aml_named_field() terms, Igor Mammedov, 2015/02/09
[Qemu-devel] [PATCH v3 27/52] acpi: add aml_io() helper, Igor Mammedov, 2015/02/09
[Qemu-devel] [PATCH v3 31/52] acpi: add aml_local() term, Igor Mammedov, 2015/02/09