[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug met
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs |
Date: |
Wed, 15 Oct 2014 16:34:01 +0300 |
On Wed, Oct 15, 2014 at 03:19:00PM +0200, Igor Mammedov wrote:
> On Wed, 15 Oct 2014 09:45:44 +0200
> Paolo Bonzini <address@hidden> wrote:
>
> > This makes it simpler to keep the SSDT byte-for-byte identical for a
> > given machine type, which is a goal we want to have for 2.2 and newer
> > types.
> >
> > Signed-off-by: Paolo Bonzini <address@hidden>
> Moving static code to DSDT is resonable, hence
>
> Reviewed-by: Igor Mammedov <address@hidden>
>
> tested with xp3/ws2003 wich were happy with this patch.
>
> ---
> however I'm not sure that SSDT byte-for-byte compatible will make
> things better.
> Since SSDT includes snippets of AML compiled by IASL, hex-templates
> could be different depending on IASL version. Ultimately
> that would make us to keep versioned by machine type binary templates
> so that we could guaranty byte-to-byte identity.
>
> Perhaps we should reconsider and think one more time about
> http://lists.gnu.org/archive/html/qemu-stable/2014-07/msg00205.html
>
> which solves migration size issue and doesn't tie us to maintanance
> nightmare with versioned tables. I'd preffer to keep tables
> un-versioned as long as possible.
Yes, this is more or less what I am saying as well.
I would like to fix it both ways though, migrate
size without thinking about it being bigger
or smaller than previously.
>
> > ---
> > v1->v2: do not define the same Device twice (Igor)
> >
> > hw/i386/acpi-dsdt-mem-hotplug.dsl | 176 ++++++++
> > hw/i386/acpi-dsdt.dsl | 3 +-
> > hw/i386/acpi-dsdt.hex.generated | 795
> > +++++++++++++++++++++++++++++++++-
> > hw/i386/q35-acpi-dsdt.dsl | 3 +-
> > hw/i386/q35-acpi-dsdt.hex.generated | 797
> > +++++++++++++++++++++++++++++++++-
> > hw/i386/ssdt-mem.hex.generated | 8 +-
> > hw/i386/ssdt-misc.dsl | 165 +------
> > hw/i386/ssdt-misc.hex.generated | 834
> > ++----------------------------------
> > tests/acpi-test-data/pc/DSDT | Bin 2807 -> 3592 bytes
> > tests/acpi-test-data/pc/SSDT | Bin 3065 -> 2279 bytes
> > tests/acpi-test-data/q35/DSDT | Bin 7397 -> 8182 bytes
> > tests/acpi-test-data/q35/SSDT | Bin 1346 -> 560 bytes 12 files
> > changed, 1789 insertions(+), 992 deletions(-) create mode 100644
> > hw/i386/acpi-dsdt-mem-hotplug.dsl
> >
> > diff --git a/hw/i386/acpi-dsdt-mem-hotplug.dsl
> > b/hw/i386/acpi-dsdt-mem-hotplug.dsl new file mode 100644
> > index 0000000..2a36c47
> > --- /dev/null
> > +++ b/hw/i386/acpi-dsdt-mem-hotplug.dsl
> > @@ -0,0 +1,176 @@
> > +/*
> > + * 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/>.
> > + */
> > +
> > + External(MEMORY_SLOT_NOTIFY_METHOD, MethodObj)
> > +
> > + Scope(\_SB.PCI0) {
> > + Device(MEMORY_HOTPLUG_DEVICE) {
> > + Name(_HID, "PNP0A06")
> > + Name(_UID, "Memory hotplug resources")
> > + External(MEMORY_SLOTS_NUMBER, IntObj)
> > +
> > + /* Memory hotplug IO registers */
> > + OperationRegion(MEMORY_HOTPLUG_IO_REGION, SystemIO,
> > + ACPI_MEMORY_HOTPLUG_BASE,
> > + ACPI_MEMORY_HOTPLUG_IO_LEN)
> > +
> > + Name(_CRS, ResourceTemplate() {
> > + IO(Decode16, ACPI_MEMORY_HOTPLUG_BASE,
> > ACPI_MEMORY_HOTPLUG_BASE,
> > + 0, ACPI_MEMORY_HOTPLUG_IO_LEN, IO)
> > + })
> > +
> > + Method(_STA, 0) {
> > + If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> > + Return(0x0)
> > + }
> > + /* present, functioning, decoding, not shown in UI */
> > + Return(0xB)
> > + }
> > +
> > + Field(MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock,
> > Preserve) {
> > + MEMORY_SLOT_ADDR_LOW, 32, // read only
> > + MEMORY_SLOT_ADDR_HIGH, 32, // read only
> > + MEMORY_SLOT_SIZE_LOW, 32, // read only
> > + MEMORY_SLOT_SIZE_HIGH, 32, // read only
> > + MEMORY_SLOT_PROXIMITY, 32, // read only
> > + }
> > + Field(MEMORY_HOTPLUG_IO_REGION, ByteAcc, NoLock,
> > Preserve) {
> > + Offset(20),
> > + MEMORY_SLOT_ENABLED, 1, // 1 if enabled, read only
> > + MEMORY_SLOT_INSERT_EVENT, 1, // (read) 1 if has a
> > insert event. (write) 1 to clear event
> > + }
> > +
> > + Mutex (MEMORY_SLOT_LOCK, 0)
> > + Field (MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock,
> > Preserve) {
> > + MEMORY_SLOT_SLECTOR, 32, // DIMM selector, write
> > only
> > + MEMORY_SLOT_OST_EVENT, 32, // _OST event code,
> > write only
> > + MEMORY_SLOT_OST_STATUS, 32, // _OST status code,
> > write only
> > + }
> > +
> > + Method(MEMORY_SLOT_SCAN_METHOD, 0) {
> > + If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> > + Return(Zero)
> > + }
> > +
> > + Store(Zero, Local0) // Mem devs iterrator
> > + Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > + while (LLess(Local0, MEMORY_SLOTS_NUMBER)) {
> > + Store(Local0, MEMORY_SLOT_SLECTOR) // select
> > Local0 DIMM
> > + If (LEqual(MEMORY_SLOT_INSERT_EVENT, One)) { //
> > Memory device needs check
> > + MEMORY_SLOT_NOTIFY_METHOD(Local0, 1)
> > + Store(1, MEMORY_SLOT_INSERT_EVENT)
> > + }
> > + // TODO: handle memory eject request
> > + Add(Local0, One, Local0) // goto next DIMM
> > + }
> > + Release(MEMORY_SLOT_LOCK)
> > + Return(One)
> > + }
> > +
> > + Method(MEMORY_SLOT_STATUS_METHOD, 1) {
> > + Store(Zero, Local0)
> > +
> > + Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > + Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM +
> > + If (LEqual(MEMORY_SLOT_ENABLED, One)) {
> > + Store(0xF, Local0)
> > + }
> > +
> > + Release(MEMORY_SLOT_LOCK)
> > + Return(Local0)
> > + }
> > +
> > + Method(MEMORY_SLOT_CRS_METHOD, 1, Serialized) {
> > + Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > + Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM +
> > + Name(MR64, ResourceTemplate() {
> > + QWordMemory(ResourceProducer, PosDecode,
> > MinFixed, MaxFixed,
> > + Cacheable, ReadWrite,
> > + 0x0000000000000000, // Address Space
> > Granularity
> > + 0x0000000000000000, // Address Range
> > Minimum
> > + 0xFFFFFFFFFFFFFFFE, // Address Range
> > Maximum
> > + 0x0000000000000000, // Address
> > Translation Offset
> > + 0xFFFFFFFFFFFFFFFF, // Address Length
> > + ,, MW64, AddressRangeMemory, TypeStatic)
> > + })
> > +
> > + CreateDWordField(MR64, 14, MINL)
> > + CreateDWordField(MR64, 18, MINH)
> > + CreateDWordField(MR64, 38, LENL)
> > + CreateDWordField(MR64, 42, LENH)
> > + CreateDWordField(MR64, 22, MAXL)
> > + CreateDWordField(MR64, 26, MAXH)
> > +
> > + Store(MEMORY_SLOT_ADDR_HIGH, MINH)
> > + Store(MEMORY_SLOT_ADDR_LOW, MINL)
> > + Store(MEMORY_SLOT_SIZE_HIGH, LENH)
> > + Store(MEMORY_SLOT_SIZE_LOW, LENL)
> > +
> > + // 64-bit math: MAX = MIN + LEN - 1
> > + Add(MINL, LENL, MAXL)
> > + Add(MINH, LENH, MAXH)
> > + If (LLess(MAXL, MINL)) {
> > + Add(MAXH, One, MAXH)
> > + }
> > + If (LLess(MAXL, One)) {
> > + Subtract(MAXH, One, MAXH)
> > + }
> > + Subtract(MAXL, One, MAXL)
> > +
> > + If (LEqual(MAXH, Zero)){
> > + Name(MR32, ResourceTemplate() {
> > + DWordMemory(ResourceProducer, PosDecode,
> > MinFixed, MaxFixed,
> > + Cacheable, ReadWrite,
> > + 0x00000000, // Address Space
> > Granularity
> > + 0x00000000, // Address Range Minimum
> > + 0xFFFFFFFE, // Address Range Maximum
> > + 0x00000000, // Address Translation
> > Offset
> > + 0xFFFFFFFF, // Address Length
> > + ,, MW32, AddressRangeMemory, TypeStatic)
> > + })
> > + CreateDWordField(MR32, MW32._MIN, MIN)
> > + CreateDWordField(MR32, MW32._MAX, MAX)
> > + CreateDWordField(MR32, MW32._LEN, LEN)
> > + Store(MINL, MIN)
> > + Store(MAXL, MAX)
> > + Store(LENL, LEN)
> > +
> > + Release(MEMORY_SLOT_LOCK)
> > + Return(MR32)
> > + }
> > +
> > + Release(MEMORY_SLOT_LOCK)
> > + Return(MR64)
> > + }
> > +
> > + Method(MEMORY_SLOT_PROXIMITY_METHOD, 1) {
> > + Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > + Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM
> > + Store(MEMORY_SLOT_PROXIMITY, Local0)
> > + Release(MEMORY_SLOT_LOCK)
> > + Return(Local0)
> > + }
> > +
> > + Method(MEMORY_SLOT_OST_METHOD, 4) {
> > + Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > + Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM
> > + Store(Arg1, MEMORY_SLOT_OST_EVENT)
> > + Store(Arg2, MEMORY_SLOT_OST_STATUS)
> > + Release(MEMORY_SLOT_LOCK)
> > + }
> > + } // Device()
> > + } // Scope()
> > diff --git a/hw/i386/acpi-dsdt.dsl b/hw/i386/acpi-dsdt.dsl
> > index 559f4b6..a611e07 100644
> > --- a/hw/i386/acpi-dsdt.dsl
> > +++ b/hw/i386/acpi-dsdt.dsl
> > @@ -297,13 +297,12 @@ DefinitionBlock (
> > #include "hw/acpi/pc-hotplug.h"
> > #define CPU_STATUS_BASE PIIX4_CPU_HOTPLUG_IO_BASE
> > #include "acpi-dsdt-cpu-hotplug.dsl"
> > +#include "acpi-dsdt-mem-hotplug.dsl"
> >
> >
> > /****************************************************************
> > * General purpose events
> > ****************************************************************/
> > -
> > External(\_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_SCAN_METHOD,
> > MethodObj) - Scope(\_GPE) {
> > Name(_HID, "ACPI0006")
> >
> > diff --git a/hw/i386/acpi-dsdt.hex.generated
> > b/hw/i386/acpi-dsdt.hex.generated index a21bf41..875570e 100644
> > --- a/hw/i386/acpi-dsdt.hex.generated
> > +++ b/hw/i386/acpi-dsdt.hex.generated
> > @@ -3,12 +3,12 @@ static unsigned char AcpiDsdtAmlCode[] = {
> > 0x53,
> > 0x44,
> > 0x54,
> > -0xf7,
> > -0xa,
> > +0x8,
> > +0xe,
> > 0x0,
> > 0x0,
> > 0x1,
> > -0x1f,
> > +0xfc,
> > 0x42,
> > 0x58,
> > 0x50,
> > @@ -32,8 +32,8 @@ static unsigned char AcpiDsdtAmlCode[] = {
> > 0x54,
> > 0x4c,
> > 0x28,
> > -0x5,
> > -0x10,
> > +0x8,
> > +0x14,
> > 0x20,
> > 0x10,
> > 0x49,
> > @@ -2593,6 +2593,791 @@ static unsigned char AcpiDsdtAmlCode[] = {
> > 0xa,
> > 0xb,
> > 0x10,
> > +0x40,
> > +0x31,
> > +0x2e,
> > +0x5f,
> > +0x53,
> > +0x42,
> > +0x5f,
> > +0x50,
> > +0x43,
> > +0x49,
> > +0x30,
> > +0x5b,
> > +0x82,
> > +0x43,
> > +0x30,
> > +0x4d,
> > +0x48,
> > +0x50,
> > +0x44,
> > +0x8,
> > +0x5f,
> > +0x48,
> > +0x49,
> > +0x44,
> > +0xd,
> > +0x50,
> > +0x4e,
> > +0x50,
> > +0x30,
> > +0x41,
> > +0x30,
> > +0x36,
> > +0x0,
> > +0x8,
> > +0x5f,
> > +0x55,
> > +0x49,
> > +0x44,
> > +0xd,
> > +0x4d,
> > +0x65,
> > +0x6d,
> > +0x6f,
> > +0x72,
> > +0x79,
> > +0x20,
> > +0x68,
> > +0x6f,
> > +0x74,
> > +0x70,
> > +0x6c,
> > +0x75,
> > +0x67,
> > +0x20,
> > +0x72,
> > +0x65,
> > +0x73,
> > +0x6f,
> > +0x75,
> > +0x72,
> > +0x63,
> > +0x65,
> > +0x73,
> > +0x0,
> > +0x5b,
> > +0x80,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x1,
> > +0xb,
> > +0x0,
> > +0xa,
> > +0xa,
> > +0x18,
> > +0x8,
> > +0x5f,
> > +0x43,
> > +0x52,
> > +0x53,
> > +0x11,
> > +0xd,
> > +0xa,
> > +0xa,
> > +0x47,
> > +0x1,
> > +0x0,
> > +0xa,
> > +0x0,
> > +0xa,
> > +0x0,
> > +0x18,
> > +0x79,
> > +0x0,
> > +0x14,
> > +0x13,
> > +0x5f,
> > +0x53,
> > +0x54,
> > +0x41,
> > +0x0,
> > +0xa0,
> > +0x9,
> > +0x93,
> > +0x4d,
> > +0x44,
> > +0x4e,
> > +0x52,
> > +0x0,
> > +0xa4,
> > +0x0,
> > +0xa4,
> > +0xa,
> > +0xb,
> > +0x5b,
> > +0x81,
> > +0x1f,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x3,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x4c,
> > +0x20,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x48,
> > +0x20,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x4c,
> > +0x20,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x48,
> > +0x20,
> > +0x4d,
> > +0x50,
> > +0x58,
> > +0x5f,
> > +0x20,
> > +0x5b,
> > +0x81,
> > +0x13,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x1,
> > +0x0,
> > +0x40,
> > +0xa,
> > +0x4d,
> > +0x45,
> > +0x53,
> > +0x5f,
> > +0x1,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x53,
> > +0x1,
> > +0x5b,
> > +0x1,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0x0,
> > +0x5b,
> > +0x81,
> > +0x15,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x3,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x20,
> > +0x4d,
> > +0x4f,
> > +0x45,
> > +0x56,
> > +0x20,
> > +0x4d,
> > +0x4f,
> > +0x53,
> > +0x43,
> > +0x20,
> > +0x14,
> > +0x4a,
> > +0x4,
> > +0x4d,
> > +0x53,
> > +0x43,
> > +0x4e,
> > +0x0,
> > +0xa0,
> > +0x9,
> > +0x93,
> > +0x4d,
> > +0x44,
> > +0x4e,
> > +0x52,
> > +0x0,
> > +0xa4,
> > +0x0,
> > +0x70,
> > +0x0,
> > +0x60,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0xa2,
> > +0x25,
> > +0x95,
> > +0x60,
> > +0x4d,
> > +0x44,
> > +0x4e,
> > +0x52,
> > +0x70,
> > +0x60,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0xa0,
> > +0x13,
> > +0x93,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x53,
> > +0x1,
> > +0x4d,
> > +0x54,
> > +0x46,
> > +0x59,
> > +0x60,
> > +0x1,
> > +0x70,
> > +0x1,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x53,
> > +0x72,
> > +0x60,
> > +0x1,
> > +0x60,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x1,
> > +0x14,
> > +0x2d,
> > +0x4d,
> > +0x52,
> > +0x53,
> > +0x54,
> > +0x1,
> > +0x70,
> > +0x0,
> > +0x60,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0xa0,
> > +0xb,
> > +0x93,
> > +0x4d,
> > +0x45,
> > +0x53,
> > +0x5f,
> > +0x1,
> > +0x70,
> > +0xa,
> > +0xf,
> > +0x60,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x60,
> > +0x14,
> > +0x41,
> > +0x18,
> > +0x4d,
> > +0x43,
> > +0x52,
> > +0x53,
> > +0x9,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x8,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0x11,
> > +0x33,
> > +0xa,
> > +0x30,
> > +0x8a,
> > +0x2b,
> > +0x0,
> > +0x0,
> > +0xc,
> > +0x3,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xfe,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x79,
> > +0x0,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0xe,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x12,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x48,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x26,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x2a,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x48,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x16,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x1a,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x48,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x48,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x4c,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x48,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x48,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x4c,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x72,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x72,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x48,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x48,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0xa0,
> > +0x14,
> > +0x95,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x72,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x1,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0xa0,
> > +0x11,
> > +0x95,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x1,
> > +0x74,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x1,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x74,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x1,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0xa0,
> > +0x44,
> > +0x7,
> > +0x93,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x0,
> > +0x8,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0x11,
> > +0x1f,
> > +0xa,
> > +0x1c,
> > +0x87,
> > +0x17,
> > +0x0,
> > +0x0,
> > +0xc,
> > +0x3,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xfe,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x79,
> > +0x0,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0xa,
> > +0xa,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x5f,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0xa,
> > +0xe,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x5f,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0xa,
> > +0x16,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x5f,
> > +0x70,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x5f,
> > +0x70,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x5f,
> > +0x70,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x5f,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0x14,
> > +0x24,
> > +0x4d,
> > +0x50,
> > +0x58,
> > +0x4d,
> > +0x1,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x70,
> > +0x4d,
> > +0x50,
> > +0x58,
> > +0x5f,
> > +0x60,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x60,
> > +0x14,
> > +0x28,
> > +0x4d,
> > +0x4f,
> > +0x53,
> > +0x54,
> > +0x4,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x70,
> > +0x69,
> > +0x4d,
> > +0x4f,
> > +0x45,
> > +0x56,
> > +0x70,
> > +0x6a,
> > +0x4d,
> > +0x4f,
> > +0x53,
> > +0x43,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0x10,
> > 0x45,
> > 0xd,
> > 0x5f,
> > diff --git a/hw/i386/q35-acpi-dsdt.dsl b/hw/i386/q35-acpi-dsdt.dsl
> > index 054b035..e1cee5d 100644
> > --- a/hw/i386/q35-acpi-dsdt.dsl
> > +++ b/hw/i386/q35-acpi-dsdt.dsl
> > @@ -405,13 +405,12 @@ DefinitionBlock (
> > #include "hw/acpi/pc-hotplug.h"
> > #define CPU_STATUS_BASE ICH9_CPU_HOTPLUG_IO_BASE
> > #include "acpi-dsdt-cpu-hotplug.dsl"
> > +#include "acpi-dsdt-mem-hotplug.dsl"
> >
> >
> > /****************************************************************
> > * General purpose events
> > ****************************************************************/
> > -
> > External(\_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_SCAN_METHOD,
> > MethodObj) - Scope(\_GPE) {
> > Name(_HID, "ACPI0006")
> >
> > diff --git a/hw/i386/q35-acpi-dsdt.hex.generated
> > b/hw/i386/q35-acpi-dsdt.hex.generated index c9eb4ac..4807bdf 100644
> > --- a/hw/i386/q35-acpi-dsdt.hex.generated
> > +++ b/hw/i386/q35-acpi-dsdt.hex.generated
> > @@ -3,12 +3,12 @@ static unsigned char Q35AcpiDsdtAmlCode[] = {
> > 0x53,
> > 0x44,
> > 0x54,
> > -0xe5,
> > -0x1c,
> > +0xf6,
> > +0x1f,
> > 0x0,
> > 0x0,
> > 0x1,
> > -0xb7,
> > +0x91,
> > 0x42,
> > 0x58,
> > 0x50,
> > @@ -31,9 +31,9 @@ static unsigned char Q35AcpiDsdtAmlCode[] = {
> > 0x4e,
> > 0x54,
> > 0x4c,
> > -0x15,
> > -0x11,
> > -0x13,
> > +0x28,
> > +0x8,
> > +0x14,
> > 0x20,
> > 0x10,
> > 0x49,
> > @@ -7234,6 +7234,791 @@ static unsigned char Q35AcpiDsdtAmlCode[] = {
> > 0xa,
> > 0xb,
> > 0x10,
> > +0x40,
> > +0x31,
> > +0x2e,
> > +0x5f,
> > +0x53,
> > +0x42,
> > +0x5f,
> > +0x50,
> > +0x43,
> > +0x49,
> > +0x30,
> > +0x5b,
> > +0x82,
> > +0x43,
> > +0x30,
> > +0x4d,
> > +0x48,
> > +0x50,
> > +0x44,
> > +0x8,
> > +0x5f,
> > +0x48,
> > +0x49,
> > +0x44,
> > +0xd,
> > +0x50,
> > +0x4e,
> > +0x50,
> > +0x30,
> > +0x41,
> > +0x30,
> > +0x36,
> > +0x0,
> > +0x8,
> > +0x5f,
> > +0x55,
> > +0x49,
> > +0x44,
> > +0xd,
> > +0x4d,
> > +0x65,
> > +0x6d,
> > +0x6f,
> > +0x72,
> > +0x79,
> > +0x20,
> > +0x68,
> > +0x6f,
> > +0x74,
> > +0x70,
> > +0x6c,
> > +0x75,
> > +0x67,
> > +0x20,
> > +0x72,
> > +0x65,
> > +0x73,
> > +0x6f,
> > +0x75,
> > +0x72,
> > +0x63,
> > +0x65,
> > +0x73,
> > +0x0,
> > +0x5b,
> > +0x80,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x1,
> > +0xb,
> > +0x0,
> > +0xa,
> > +0xa,
> > +0x18,
> > +0x8,
> > +0x5f,
> > +0x43,
> > +0x52,
> > +0x53,
> > +0x11,
> > +0xd,
> > +0xa,
> > +0xa,
> > +0x47,
> > +0x1,
> > +0x0,
> > +0xa,
> > +0x0,
> > +0xa,
> > +0x0,
> > +0x18,
> > +0x79,
> > +0x0,
> > +0x14,
> > +0x13,
> > +0x5f,
> > +0x53,
> > +0x54,
> > +0x41,
> > +0x0,
> > +0xa0,
> > +0x9,
> > +0x93,
> > +0x4d,
> > +0x44,
> > +0x4e,
> > +0x52,
> > +0x0,
> > +0xa4,
> > +0x0,
> > +0xa4,
> > +0xa,
> > +0xb,
> > +0x5b,
> > +0x81,
> > +0x1f,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x3,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x4c,
> > +0x20,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x48,
> > +0x20,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x4c,
> > +0x20,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x48,
> > +0x20,
> > +0x4d,
> > +0x50,
> > +0x58,
> > +0x5f,
> > +0x20,
> > +0x5b,
> > +0x81,
> > +0x13,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x1,
> > +0x0,
> > +0x40,
> > +0xa,
> > +0x4d,
> > +0x45,
> > +0x53,
> > +0x5f,
> > +0x1,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x53,
> > +0x1,
> > +0x5b,
> > +0x1,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0x0,
> > +0x5b,
> > +0x81,
> > +0x15,
> > +0x48,
> > +0x50,
> > +0x4d,
> > +0x52,
> > +0x3,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x20,
> > +0x4d,
> > +0x4f,
> > +0x45,
> > +0x56,
> > +0x20,
> > +0x4d,
> > +0x4f,
> > +0x53,
> > +0x43,
> > +0x20,
> > +0x14,
> > +0x4a,
> > +0x4,
> > +0x4d,
> > +0x53,
> > +0x43,
> > +0x4e,
> > +0x0,
> > +0xa0,
> > +0x9,
> > +0x93,
> > +0x4d,
> > +0x44,
> > +0x4e,
> > +0x52,
> > +0x0,
> > +0xa4,
> > +0x0,
> > +0x70,
> > +0x0,
> > +0x60,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0xa2,
> > +0x25,
> > +0x95,
> > +0x60,
> > +0x4d,
> > +0x44,
> > +0x4e,
> > +0x52,
> > +0x70,
> > +0x60,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0xa0,
> > +0x13,
> > +0x93,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x53,
> > +0x1,
> > +0x4d,
> > +0x54,
> > +0x46,
> > +0x59,
> > +0x60,
> > +0x1,
> > +0x70,
> > +0x1,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x53,
> > +0x72,
> > +0x60,
> > +0x1,
> > +0x60,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x1,
> > +0x14,
> > +0x2d,
> > +0x4d,
> > +0x52,
> > +0x53,
> > +0x54,
> > +0x1,
> > +0x70,
> > +0x0,
> > +0x60,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0xa0,
> > +0xb,
> > +0x93,
> > +0x4d,
> > +0x45,
> > +0x53,
> > +0x5f,
> > +0x1,
> > +0x70,
> > +0xa,
> > +0xf,
> > +0x60,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x60,
> > +0x14,
> > +0x41,
> > +0x18,
> > +0x4d,
> > +0x43,
> > +0x52,
> > +0x53,
> > +0x9,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x8,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0x11,
> > +0x33,
> > +0xa,
> > +0x30,
> > +0x8a,
> > +0x2b,
> > +0x0,
> > +0x0,
> > +0xc,
> > +0x3,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xfe,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x79,
> > +0x0,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0xe,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x12,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x48,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x26,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x2a,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x48,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x16,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0xa,
> > +0x1a,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x48,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x48,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x42,
> > +0x4c,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x48,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x48,
> > +0x70,
> > +0x4d,
> > +0x52,
> > +0x4c,
> > +0x4c,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x72,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x72,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x48,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x48,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0xa0,
> > +0x14,
> > +0x95,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x72,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x1,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0xa0,
> > +0x11,
> > +0x95,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x1,
> > +0x74,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x1,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x74,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x1,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0xa0,
> > +0x44,
> > +0x7,
> > +0x93,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x48,
> > +0x0,
> > +0x8,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0x11,
> > +0x1f,
> > +0xa,
> > +0x1c,
> > +0x87,
> > +0x17,
> > +0x0,
> > +0x0,
> > +0xc,
> > +0x3,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xfe,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0x0,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0xff,
> > +0x79,
> > +0x0,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0xa,
> > +0xa,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x5f,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0xa,
> > +0xe,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x5f,
> > +0x8a,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0xa,
> > +0x16,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x5f,
> > +0x70,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x4c,
> > +0x4d,
> > +0x49,
> > +0x4e,
> > +0x5f,
> > +0x70,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x4c,
> > +0x4d,
> > +0x41,
> > +0x58,
> > +0x5f,
> > +0x70,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x4c,
> > +0x4c,
> > +0x45,
> > +0x4e,
> > +0x5f,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x4d,
> > +0x52,
> > +0x33,
> > +0x32,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x4d,
> > +0x52,
> > +0x36,
> > +0x34,
> > +0x14,
> > +0x24,
> > +0x4d,
> > +0x50,
> > +0x58,
> > +0x4d,
> > +0x1,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x70,
> > +0x4d,
> > +0x50,
> > +0x58,
> > +0x5f,
> > +0x60,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xa4,
> > +0x60,
> > +0x14,
> > +0x28,
> > +0x4d,
> > +0x4f,
> > +0x53,
> > +0x54,
> > +0x4,
> > +0x5b,
> > +0x23,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0xff,
> > +0xff,
> > +0x70,
> > +0x99,
> > +0x68,
> > +0x0,
> > +0x4d,
> > +0x53,
> > +0x45,
> > +0x4c,
> > +0x70,
> > +0x69,
> > +0x4d,
> > +0x4f,
> > +0x45,
> > +0x56,
> > +0x70,
> > +0x6a,
> > +0x4d,
> > +0x4f,
> > +0x53,
> > +0x43,
> > +0x5b,
> > +0x27,
> > +0x4d,
> > +0x4c,
> > +0x43,
> > +0x4b,
> > +0x10,
> > 0x42,
> > 0xa,
> > 0x5f,
> > diff --git a/hw/i386/ssdt-mem.hex.generated
> > b/hw/i386/ssdt-mem.hex.generated index 00bd34d..b3bfbbd 100644
> > --- a/hw/i386/ssdt-mem.hex.generated
> > +++ b/hw/i386/ssdt-mem.hex.generated
> > @@ -11,7 +11,7 @@ static unsigned char ssdm_mem_aml[] = {
> > 0x0,
> > 0x0,
> > 0x2,
> > -0x71,
> > +0x66,
> > 0x42,
> > 0x58,
> > 0x50,
> > @@ -34,9 +34,9 @@ static unsigned char ssdm_mem_aml[] = {
> > 0x4e,
> > 0x54,
> > 0x4c,
> > -0x15,
> > -0x11,
> > -0x13,
> > +0x28,
> > +0x8,
> > +0x14,
> > 0x20,
> > 0x10,
> > 0x42,
> > diff --git a/hw/i386/ssdt-misc.dsl b/hw/i386/ssdt-misc.dsl
> > index 0fd4480..1e3baae 100644
> > --- a/hw/i386/ssdt-misc.dsl
> > +++ b/hw/i386/ssdt-misc.dsl
> > @@ -36,6 +36,8 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01,
> > "BXPC", "BXSSDTSUSP", 0x1) Name(P1E, Buffer() { 0x00, 0x00, 0x00,
> > 0x00, 0x00, 0x00, 0x00, 0x00 }) ACPI_EXTRACT_NAME_BUFFER8
> > acpi_pci64_length Name(P1L, Buffer() { 0x00, 0x00, 0x00, 0x00, 0x00,
> > 0x00, 0x00, 0x00 })
> > + ACPI_EXTRACT_NAME_DWORD_CONST ssdt_mctrl_nr_slots
> > + Name(MEMORY_SLOTS_NUMBER, 0x12345678)
> > }
> >
> >
> > @@ -117,167 +119,4 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01,
> > "BXPC", "BXSSDTSUSP", 0x1) }
> > }
> > }
> > -
> > - External(MEMORY_SLOT_NOTIFY_METHOD, MethodObj)
> > - Scope(\_SB.PCI0) {
> > - Device(MEMORY_HOTPLUG_DEVICE) {
> > - Name(_HID, "PNP0A06")
> > - Name(_UID, "Memory hotplug resources")
> > -
> > - ACPI_EXTRACT_NAME_DWORD_CONST ssdt_mctrl_nr_slots
> > - Name(MEMORY_SLOTS_NUMBER, 0x12345678)
> > -
> > - /* Memory hotplug IO registers */
> > - OperationRegion(MEMORY_HOTPLUG_IO_REGION, SystemIO,
> > - ACPI_MEMORY_HOTPLUG_BASE,
> > - ACPI_MEMORY_HOTPLUG_IO_LEN)
> > -
> > - Name(_CRS, ResourceTemplate() {
> > - IO(Decode16, ACPI_MEMORY_HOTPLUG_BASE,
> > ACPI_MEMORY_HOTPLUG_BASE,
> > - 0, ACPI_MEMORY_HOTPLUG_IO_LEN, IO)
> > - })
> > -
> > - Method(_STA, 0) {
> > - If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> > - Return(0x0)
> > - }
> > - /* present, functioning, decoding, not shown in UI */
> > - Return(0xB)
> > - }
> > -
> > - Field(MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock,
> > Preserve) {
> > - MEMORY_SLOT_ADDR_LOW, 32, // read only
> > - MEMORY_SLOT_ADDR_HIGH, 32, // read only
> > - MEMORY_SLOT_SIZE_LOW, 32, // read only
> > - MEMORY_SLOT_SIZE_HIGH, 32, // read only
> > - MEMORY_SLOT_PROXIMITY, 32, // read only
> > - }
> > - Field(MEMORY_HOTPLUG_IO_REGION, ByteAcc, NoLock,
> > Preserve) {
> > - Offset(20),
> > - MEMORY_SLOT_ENABLED, 1, // 1 if enabled, read only
> > - MEMORY_SLOT_INSERT_EVENT, 1, // (read) 1 if has a
> > insert event. (write) 1 to clear event
> > - }
> > -
> > - Mutex (MEMORY_SLOT_LOCK, 0)
> > - Field (MEMORY_HOTPLUG_IO_REGION, DWordAcc, NoLock,
> > Preserve) {
> > - MEMORY_SLOT_SLECTOR, 32, // DIMM selector, write
> > only
> > - MEMORY_SLOT_OST_EVENT, 32, // _OST event code,
> > write only
> > - MEMORY_SLOT_OST_STATUS, 32, // _OST status code,
> > write only
> > - }
> > -
> > - Method(MEMORY_SLOT_SCAN_METHOD, 0) {
> > - If (LEqual(MEMORY_SLOTS_NUMBER, Zero)) {
> > - Return(Zero)
> > - }
> > -
> > - Store(Zero, Local0) // Mem devs iterrator
> > - Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > - while (LLess(Local0, MEMORY_SLOTS_NUMBER)) {
> > - Store(Local0, MEMORY_SLOT_SLECTOR) // select
> > Local0 DIMM
> > - If (LEqual(MEMORY_SLOT_INSERT_EVENT, One)) { //
> > Memory device needs check
> > - MEMORY_SLOT_NOTIFY_METHOD(Local0, 1)
> > - Store(1, MEMORY_SLOT_INSERT_EVENT)
> > - }
> > - // TODO: handle memory eject request
> > - Add(Local0, One, Local0) // goto next DIMM
> > - }
> > - Release(MEMORY_SLOT_LOCK)
> > - Return(One)
> > - }
> > -
> > - Method(MEMORY_SLOT_STATUS_METHOD, 1) {
> > - Store(Zero, Local0)
> > -
> > - Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > - Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM -
> > - If (LEqual(MEMORY_SLOT_ENABLED, One)) {
> > - Store(0xF, Local0)
> > - }
> > -
> > - Release(MEMORY_SLOT_LOCK)
> > - Return(Local0)
> > - }
> > -
> > - Method(MEMORY_SLOT_CRS_METHOD, 1, Serialized) {
> > - Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > - Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM -
> > - Name(MR64, ResourceTemplate() {
> > - QWordMemory(ResourceProducer, PosDecode,
> > MinFixed, MaxFixed,
> > - Cacheable, ReadWrite,
> > - 0x0000000000000000, // Address Space
> > Granularity
> > - 0x0000000000000000, // Address Range
> > Minimum
> > - 0xFFFFFFFFFFFFFFFE, // Address Range
> > Maximum
> > - 0x0000000000000000, // Address
> > Translation Offset
> > - 0xFFFFFFFFFFFFFFFF, // Address Length
> > - ,, MW64, AddressRangeMemory, TypeStatic)
> > - })
> > -
> > - CreateDWordField(MR64, 14, MINL)
> > - CreateDWordField(MR64, 18, MINH)
> > - CreateDWordField(MR64, 38, LENL)
> > - CreateDWordField(MR64, 42, LENH)
> > - CreateDWordField(MR64, 22, MAXL)
> > - CreateDWordField(MR64, 26, MAXH)
> > -
> > - Store(MEMORY_SLOT_ADDR_HIGH, MINH)
> > - Store(MEMORY_SLOT_ADDR_LOW, MINL)
> > - Store(MEMORY_SLOT_SIZE_HIGH, LENH)
> > - Store(MEMORY_SLOT_SIZE_LOW, LENL)
> > -
> > - // 64-bit math: MAX = MIN + LEN - 1
> > - Add(MINL, LENL, MAXL)
> > - Add(MINH, LENH, MAXH)
> > - If (LLess(MAXL, MINL)) {
> > - Add(MAXH, One, MAXH)
> > - }
> > - If (LLess(MAXL, One)) {
> > - Subtract(MAXH, One, MAXH)
> > - }
> > - Subtract(MAXL, One, MAXL)
> > -
> > - If (LEqual(MAXH, Zero)){
> > - Name(MR32, ResourceTemplate() {
> > - DWordMemory(ResourceProducer, PosDecode,
> > MinFixed, MaxFixed,
> > - Cacheable, ReadWrite,
> > - 0x00000000, // Address Space
> > Granularity
> > - 0x00000000, // Address Range Minimum
> > - 0xFFFFFFFE, // Address Range Maximum
> > - 0x00000000, // Address Translation
> > Offset
> > - 0xFFFFFFFF, // Address Length
> > - ,, MW32, AddressRangeMemory, TypeStatic)
> > - })
> > - CreateDWordField(MR32, MW32._MIN, MIN)
> > - CreateDWordField(MR32, MW32._MAX, MAX)
> > - CreateDWordField(MR32, MW32._LEN, LEN)
> > - Store(MINL, MIN)
> > - Store(MAXL, MAX)
> > - Store(LENL, LEN)
> > -
> > - Release(MEMORY_SLOT_LOCK)
> > - Return(MR32)
> > - }
> > -
> > - Release(MEMORY_SLOT_LOCK)
> > - Return(MR64)
> > - }
> > -
> > - Method(MEMORY_SLOT_PROXIMITY_METHOD, 1) {
> > - Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > - Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM
> > - Store(MEMORY_SLOT_PROXIMITY, Local0)
> > - Release(MEMORY_SLOT_LOCK)
> > - Return(Local0)
> > - }
> > -
> > - Method(MEMORY_SLOT_OST_METHOD, 4) {
> > - Acquire(MEMORY_SLOT_LOCK, 0xFFFF)
> > - Store(ToInteger(Arg0), MEMORY_SLOT_SLECTOR) //
> > select DIMM
> > - Store(Arg1, MEMORY_SLOT_OST_EVENT)
> > - Store(Arg2, MEMORY_SLOT_OST_STATUS)
> > - Release(MEMORY_SLOT_LOCK)
> > - }
> > - } // Device()
> > - } // Scope()
> > }
> > diff --git a/hw/i386/ssdt-misc.hex.generated
> > b/hw/i386/ssdt-misc.hex.generated index ba4268a..cbcf61d 100644
> > --- a/hw/i386/ssdt-misc.hex.generated
> > +++ b/hw/i386/ssdt-misc.hex.generated
> > @@ -2,13 +2,13 @@ static unsigned char acpi_pci64_length[] = {
> > 0x6f
> > };
> > static unsigned char acpi_s4_pkg[] = {
> > -0x8f
> > +0x99
> > };
> > -static unsigned short ssdt_mctrl_nr_slots[] = {
> > -0x1aa
> > +static unsigned char ssdt_mctrl_nr_slots[] = {
> > +0x7d
> > };
> > static unsigned char acpi_s3_name[] = {
> > -0x7c
> > +0x86
> > };
> > static unsigned char acpi_pci32_start[] = {
> > 0x2f
> > @@ -21,12 +21,12 @@ static unsigned char ssdp_misc_aml[] = {
> > 0x53,
> > 0x44,
> > 0x54,
> > -0x7e,
> > -0x4,
> > +0x6c,
> > +0x1,
> > 0x0,
> > 0x0,
> > 0x1,
> > -0x8b,
> > +0x3,
> > 0x42,
> > 0x58,
> > 0x50,
> > @@ -49,12 +49,12 @@ static unsigned char ssdp_misc_aml[] = {
> > 0x4e,
> > 0x54,
> > 0x4c,
> > -0x15,
> > -0x11,
> > -0x13,
> > +0x28,
> > +0x8,
> > +0x14,
> > 0x20,
> > 0x10,
> > -0x42,
> > +0x4c,
> > 0x5,
> > 0x5c,
> > 0x0,
> > @@ -136,6 +136,16 @@ static unsigned char ssdp_misc_aml[] = {
> > 0x0,
> > 0x0,
> > 0x0,
> > +0x8,
> > +0x4d,
> > +0x44,
> > +0x4e,
> > +0x52,
> > +0xc,
> > +0x78,
> > +0x56,
> > +0x34,
> > +0x12,
> > 0x10,
> > 0x29,
> > 0x5c,
> > @@ -370,809 +380,13 @@ static unsigned char ssdp_misc_aml[] = {
> > 0x49,
> > 0x4f,
> > 0x4d,
> > -0x58,
> > -0x10,
> > -0x4b,
> > -0x31,
> > -0x5c,
> > -0x2e,
> > -0x5f,
> > -0x53,
> > -0x42,
> > -0x5f,
> > -0x50,
> > -0x43,
> > -0x49,
> > -0x30,
> > -0x5b,
> > -0x82,
> > -0x4d,
> > -0x30,
> > -0x4d,
> > -0x48,
> > -0x50,
> > -0x44,
> > -0x8,
> > -0x5f,
> > -0x48,
> > -0x49,
> > -0x44,
> > -0xd,
> > -0x50,
> > -0x4e,
> > -0x50,
> > -0x30,
> > -0x41,
> > -0x30,
> > -0x36,
> > -0x0,
> > -0x8,
> > -0x5f,
> > -0x55,
> > -0x49,
> > -0x44,
> > -0xd,
> > -0x4d,
> > -0x65,
> > -0x6d,
> > -0x6f,
> > -0x72,
> > -0x79,
> > -0x20,
> > -0x68,
> > -0x6f,
> > -0x74,
> > -0x70,
> > -0x6c,
> > -0x75,
> > -0x67,
> > -0x20,
> > -0x72,
> > -0x65,
> > -0x73,
> > -0x6f,
> > -0x75,
> > -0x72,
> > -0x63,
> > -0x65,
> > -0x73,
> > -0x0,
> > -0x8,
> > -0x4d,
> > -0x44,
> > -0x4e,
> > -0x52,
> > -0xc,
> > -0x78,
> > -0x56,
> > -0x34,
> > -0x12,
> > -0x5b,
> > -0x80,
> > -0x48,
> > -0x50,
> > -0x4d,
> > -0x52,
> > -0x1,
> > -0xb,
> > -0x0,
> > -0xa,
> > -0xa,
> > -0x18,
> > -0x8,
> > -0x5f,
> > -0x43,
> > -0x52,
> > -0x53,
> > -0x11,
> > -0xd,
> > -0xa,
> > -0xa,
> > -0x47,
> > -0x1,
> > -0x0,
> > -0xa,
> > -0x0,
> > -0xa,
> > -0x0,
> > -0x18,
> > -0x79,
> > -0x0,
> > -0x14,
> > -0x13,
> > -0x5f,
> > -0x53,
> > -0x54,
> > -0x41,
> > -0x0,
> > -0xa0,
> > -0x9,
> > -0x93,
> > -0x4d,
> > -0x44,
> > -0x4e,
> > -0x52,
> > -0x0,
> > -0xa4,
> > -0x0,
> > -0xa4,
> > -0xa,
> > -0xb,
> > -0x5b,
> > -0x81,
> > -0x1f,
> > -0x48,
> > -0x50,
> > -0x4d,
> > -0x52,
> > -0x3,
> > -0x4d,
> > -0x52,
> > -0x42,
> > -0x4c,
> > -0x20,
> > -0x4d,
> > -0x52,
> > -0x42,
> > -0x48,
> > -0x20,
> > -0x4d,
> > -0x52,
> > -0x4c,
> > -0x4c,
> > -0x20,
> > -0x4d,
> > -0x52,
> > -0x4c,
> > -0x48,
> > -0x20,
> > -0x4d,
> > -0x50,
> > -0x58,
> > -0x5f,
> > -0x20,
> > -0x5b,
> > -0x81,
> > -0x13,
> > -0x48,
> > -0x50,
> > -0x4d,
> > -0x52,
> > -0x1,
> > -0x0,
> > -0x40,
> > -0xa,
> > -0x4d,
> > -0x45,
> > -0x53,
> > -0x5f,
> > -0x1,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x53,
> > -0x1,
> > -0x5b,
> > -0x1,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0x0,
> > -0x5b,
> > -0x81,
> > -0x15,
> > -0x48,
> > -0x50,
> > -0x4d,
> > -0x52,
> > -0x3,
> > -0x4d,
> > -0x53,
> > -0x45,
> > -0x4c,
> > -0x20,
> > -0x4d,
> > -0x4f,
> > -0x45,
> > -0x56,
> > -0x20,
> > -0x4d,
> > -0x4f,
> > -0x53,
> > -0x43,
> > -0x20,
> > -0x14,
> > -0x4a,
> > -0x4,
> > -0x4d,
> > -0x53,
> > -0x43,
> > -0x4e,
> > -0x0,
> > -0xa0,
> > -0x9,
> > -0x93,
> > -0x4d,
> > -0x44,
> > -0x4e,
> > -0x52,
> > -0x0,
> > -0xa4,
> > -0x0,
> > -0x70,
> > -0x0,
> > -0x60,
> > -0x5b,
> > -0x23,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xff,
> > -0xff,
> > -0xa2,
> > -0x25,
> > -0x95,
> > -0x60,
> > -0x4d,
> > -0x44,
> > -0x4e,
> > -0x52,
> > -0x70,
> > -0x60,
> > -0x4d,
> > -0x53,
> > -0x45,
> > -0x4c,
> > -0xa0,
> > -0x13,
> > -0x93,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x53,
> > -0x1,
> > -0x4d,
> > -0x54,
> > -0x46,
> > -0x59,
> > -0x60,
> > -0x1,
> > -0x70,
> > -0x1,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x53,
> > -0x72,
> > -0x60,
> > -0x1,
> > -0x60,
> > -0x5b,
> > -0x27,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xa4,
> > -0x1,
> > -0x14,
> > -0x2d,
> > -0x4d,
> > -0x52,
> > -0x53,
> > -0x54,
> > -0x1,
> > -0x70,
> > -0x0,
> > -0x60,
> > -0x5b,
> > -0x23,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xff,
> > -0xff,
> > -0x70,
> > -0x99,
> > -0x68,
> > -0x0,
> > -0x4d,
> > -0x53,
> > -0x45,
> > -0x4c,
> > -0xa0,
> > -0xb,
> > -0x93,
> > -0x4d,
> > -0x45,
> > -0x53,
> > -0x5f,
> > -0x1,
> > -0x70,
> > -0xa,
> > -0xf,
> > -0x60,
> > -0x5b,
> > -0x27,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xa4,
> > -0x60,
> > -0x14,
> > -0x41,
> > -0x18,
> > -0x4d,
> > -0x43,
> > -0x52,
> > -0x53,
> > -0x9,
> > -0x5b,
> > -0x23,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xff,
> > -0xff,
> > -0x70,
> > -0x99,
> > -0x68,
> > -0x0,
> > -0x4d,
> > -0x53,
> > -0x45,
> > -0x4c,
> > -0x8,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0x11,
> > -0x33,
> > -0xa,
> > -0x30,
> > -0x8a,
> > -0x2b,
> > -0x0,
> > -0x0,
> > -0xc,
> > -0x3,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0xfe,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0x79,
> > -0x0,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0xa,
> > -0xe,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x4c,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0xa,
> > -0x12,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x48,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0xa,
> > -0x26,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x4c,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0xa,
> > -0x2a,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x48,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0xa,
> > -0x16,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x4c,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0xa,
> > -0x1a,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x48,
> > -0x70,
> > -0x4d,
> > -0x52,
> > -0x42,
> > -0x48,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x48,
> > -0x70,
> > -0x4d,
> > -0x52,
> > -0x42,
> > -0x4c,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x4c,
> > -0x70,
> > -0x4d,
> > -0x52,
> > -0x4c,
> > -0x48,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x48,
> > -0x70,
> > -0x4d,
> > -0x52,
> > -0x4c,
> > -0x4c,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x4c,
> > -0x72,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x4c,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x4c,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x4c,
> > -0x72,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x48,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x48,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x48,
> > -0xa0,
> > -0x14,
> > -0x95,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x4c,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x4c,
> > -0x72,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x48,
> > -0x1,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x48,
> > -0xa0,
> > -0x11,
> > -0x95,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x4c,
> > -0x1,
> > -0x74,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x48,
> > -0x1,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x48,
> > -0x74,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x4c,
> > -0x1,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x4c,
> > -0xa0,
> > -0x44,
> > -0x7,
> > -0x93,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x48,
> > -0x0,
> > -0x8,
> > -0x4d,
> > -0x52,
> > -0x33,
> > -0x32,
> > -0x11,
> > -0x1f,
> > -0xa,
> > -0x1c,
> > -0x87,
> > -0x17,
> > -0x0,
> > -0x0,
> > -0xc,
> > -0x3,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0xfe,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0x0,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0xff,
> > -0x79,
> > -0x0,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x33,
> > -0x32,
> > -0xa,
> > -0xa,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x5f,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x33,
> > -0x32,
> > -0xa,
> > -0xe,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x5f,
> > -0x8a,
> > -0x4d,
> > -0x52,
> > -0x33,
> > -0x32,
> > -0xa,
> > -0x16,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x5f,
> > -0x70,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x4c,
> > -0x4d,
> > -0x49,
> > -0x4e,
> > -0x5f,
> > -0x70,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x4c,
> > -0x4d,
> > -0x41,
> > -0x58,
> > -0x5f,
> > -0x70,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x4c,
> > -0x4c,
> > -0x45,
> > -0x4e,
> > -0x5f,
> > -0x5b,
> > -0x27,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xa4,
> > -0x4d,
> > -0x52,
> > -0x33,
> > -0x32,
> > -0x5b,
> > -0x27,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xa4,
> > -0x4d,
> > -0x52,
> > -0x36,
> > -0x34,
> > -0x14,
> > -0x24,
> > -0x4d,
> > -0x50,
> > -0x58,
> > -0x4d,
> > -0x1,
> > -0x5b,
> > -0x23,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xff,
> > -0xff,
> > -0x70,
> > -0x99,
> > -0x68,
> > -0x0,
> > -0x4d,
> > -0x53,
> > -0x45,
> > -0x4c,
> > -0x70,
> > -0x4d,
> > -0x50,
> > -0x58,
> > -0x5f,
> > -0x60,
> > -0x5b,
> > -0x27,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xa4,
> > -0x60,
> > -0x14,
> > -0x28,
> > -0x4d,
> > -0x4f,
> > -0x53,
> > -0x54,
> > -0x4,
> > -0x5b,
> > -0x23,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b,
> > -0xff,
> > -0xff,
> > -0x70,
> > -0x99,
> > -0x68,
> > -0x0,
> > -0x4d,
> > -0x53,
> > -0x45,
> > -0x4c,
> > -0x70,
> > -0x69,
> > -0x4d,
> > -0x4f,
> > -0x45,
> > -0x56,
> > -0x70,
> > -0x6a,
> > -0x4d,
> > -0x4f,
> > -0x53,
> > -0x43,
> > -0x5b,
> > -0x27,
> > -0x4d,
> > -0x4c,
> > -0x43,
> > -0x4b
> > +0x58
> > };
> > static unsigned char ssdt_isa_pest[] = {
> > -0xd0
> > +0xda
> > };
> > static unsigned char acpi_s4_name[] = {
> > -0x88
> > +0x92
> > };
> > static unsigned char acpi_pci64_start[] = {
> > 0x4d
> > diff --git a/tests/acpi-test-data/pc/DSDT
> > b/tests/acpi-test-data/pc/DSDT index
> > d37ec34454e6f3db5e91b777f94e03be67a5f583..ee9cc6781cea3a9515b9a176eea3459f8e4d8655
> > 100644 GIT binary patch delta 814
> > zcmZ8fO>fgc5ZzTP;cjS9h#MkQsYZMX1TsyPb5lFuz;3W?Qx*BJmfDDdKv}u%Atw_q
> > zpkA#WxJ4*`fIq`u;address@hidden)^~<4ELn(
> > z4D9%;V++rB4e1Tsb${sFJ-bT``4)C!^m&|4tmE;i`gHc*N=GN-v-EIuLgFu;F9KR4
> > zjI|Bv1Yu*Hv6qxE_}UX<Hf0#~$ZRba?l2&8GH11Tx`mn*5$y5Ig6Kiu90MT#Kw9y%
> > zsa?q~6a7$9F&address@hidden)nOkbZ~FTXLdP;+t%}eYE}f)E65mBhQT)7rk>L3%
> > address@hidden)8G>IQ#`J9?hMG!`G$w2)address@hidden>address@hidden
> > z)(}B=r_o{d`4d8}uaGP2Z-FZ-ii+2J2orLSN>+zU@)F(z=#}sR?^o<&fD5)IdIyWz
> > z+W<X<e-%XtI2r-q9tsd}G)a-p5TO`%I*;<1d4U`jq`0S=Y-p06UNVR{=J?FLmLpA|
> > z>CSdzi*0_pwcIo|i+y5`y1&jgV_+{c=n8Nh#Il4fxRF$NH0Bk$V^ZNoF|~LklwHE^
> > pj(address@hidden<Y
> >
> > delta 23
> > ecmeB>`7X-k66_N4or{5iv0)>Z1lMF^-m3sr#Rl;J
> >
> > diff --git a/tests/acpi-test-data/pc/SSDT
> > b/tests/acpi-test-data/pc/SSDT index
> > eb2d8b698ce6a3a910a05244a3b6cf80bf818fb9..558e4c85b031ec081045aec6cc382a680e9c6009
> > 100644 GIT binary patch delta 38
> > ucmew<{#=kNIM^lRIR^s+Bi}?WX-1!kYJqGVzAk=2JQIsQY_4aiVg~@)a|=)a
> >
> > delta 833
> > zcmZ8fO>fgc5ZzTP)!np3CZ>address@hidden
> > zT#(8sihAG{q5K1W6c_$LFN7I?l!&#oe*0$M+nt^HrC)3?DV^Y=LJ0jfVmD}OwDoc{
> > z{GIMSK6n(#R^-_oEBqoX;d+i1xgBTK>address@hidden
> > zdD}ZCnsB=Q3V{)Rc0J+K3Sq3KMYb>XRmPrC!r-e7h*6DX&?J-PF)GNEOj#vNhnpx`
> > z5PplBFu5>sL>!Q}ADQ8>address@hidden|NI1Nfi)9-mFWRqRlD26)Ulh{r
> > z&Yh%49NtFBZ1&^sd5q_)Sb%DhR>zs62%f%)smkn=n8x8f+&-noL*dJS&Kaohha{6$
> > address@hidden<z7wrja|LYtg~%GRu=HFijijjKeK$4Y_XgT$Qdfx8r+fR
> > address@hidden|vJU_j?7C>~7kjS*bQQiTiV$!#0>address@hidden&
> > zu4zW<8A(qr8AKdoeBvyPk%q?b>pS`;yZLovK55Jq^TZqnB!yJ!JB)#Ul*2U;7jPYJ
> > z6e&C!!wTIosPLi~DvE>-m$0#G+=0ds^#2+tY^Q&fx(address@hidden<b#
> > K=g%YhY3VN!sP#$!
> >
> > diff --git a/tests/acpi-test-data/q35/DSDT
> > b/tests/acpi-test-data/q35/DSDT index
> > 2d2bc4adaf54666fe7864e7f39203411b7c308f7..ef0c75f4236de3e6f727e21991533f2bf8279dee
> > 100644 GIT binary patch delta 793
> > zcmZ8f&1(}u6rZ65w-Z~5S!<L)7U~y*614<+vdM0Aqcd^YS*0?<EJ(15l408(a$4g>
> > address@hidden|0u5>d+=a<Z$D~r7KY#Z`2F5{JMZVt$wTHzFFI)xLVy2YJFRs0-d!#G
> > zI&g;_^~voBKkzK=554tZ6m)u>F0u4;u*CSoB$+z<lSA|V=#7(%4<<*+>address@hidden
> > zv_=?fTG|a|eVwt#lrZ?3Q(`x?jCy3gmI-eZk_B0?nwqtdvm(address@hidden;R
> > zHEZOmWS5D7)Km;dk}4{=`;@5JrGhO7KzTNJ0he?g`^l=1?&wS<Lt?dsl;!f<address@hidden
> > address@hidden)tz~&bhFz$#W4qTBF!x$j
> > ztje`S_KRLg37kL6;vmLTn#(EqBEs%A+kk#}0WSjd3wVPMD(`K8rFT>G_R8F=0DXf$
> > z5J?C)3IX6g5)h;uRTA_gKr$M69O-lW7=0K|(5AVwo;&address@hidden(i5
> > z+pP8ZG9l+ziph#us~KUw6tfrueGO9q+yHV3H=!eKur!7Zs$<Y#qZlgR18JwQyKP^C
> > o9TD{Z-)(Sn{yoYq*otUXZ8^mTRF7ib;>wtJxHE-j)^C0P3owxI%m4rY
> >
> > delta 23
> > ecmexn|J0JpCD<address@hidden(Eh2
> >
> > diff --git a/tests/acpi-test-data/q35/SSDT
> > b/tests/acpi-test-data/q35/SSDT index
> > 778b79bf428b5d7602b7b80c9434e38c79718bb2..4e45510181c4038505ae1815b76799a2cd0e8808
> > 100644 GIT binary patch delta 37
> > address@hidden;address@hidden;1+3;?*r3h)2`
> >
> > literal 1346
> > zcmZWp-%r#)5Z;address@hidden>xxWwNWwZ|d)NUyD4q1#)address@hidden<l
> > z;Nyh{-%fM?hyG=pGwmH9_M!deoBd{Ic4sQ39o9z)p?<w-HDsl}AuI_TC4?ZxZ?QhQ
> > zNi<<dRRHS`AV(address@hidden)9ECjqFRHSZ
> > zV}wBju%4p_gB6zxo6km+tSe!;address@hidden;7vVGm
> > ziWZFy^8-VKnm(&!Xp#gyad)f}lOFk*>#-?)GO$I64iUz^STDQ{L`ahs+M2QgS(;$%
> > zHJ${a^niRvid}P?+|OVR;address@hidden(7au5=r86j!U8Plx$K?gnoNJIh`8!Z3{`sCNx2
> > z;address@hidden&R+6q|3js{wY#(5e!sO#G;aF=9zE375ImrH!r1KP%<$M|address@hidden
> > zpaRP4v3ztmhnf){)V&J48u0QEd4R-*szis=X;8AvxFZ$it}kgsxo54C=<r4+mJUdo
> > z&N{rLRnb>+Tv|address@hidden<{;zwdF>as498}%uP8yJhuinKpNu#%88b=Rsb&u*#
> > zcmNl5NuT^^kyM%Qr1>OlYPdSq%~=kIKR(=RxK`uA(qgH`jFZQN6h`o<E<b1e>=|+c
> > zvwuKNP{<}BMK6P8fQ<address@hidden@g{%1Re$g;5ATyz{4PIq!FMN
> > zjns|mu6~Lf`rByJlq{tr-8*LxdFb=H_Vo_Z&=f&!p)|*Cf4h0PWGofS#1hl;Y72}(
> > zcm*{9oCNIv&Okyc!JW~aU~qIMm?ydhH-xftxU{I>g{I;3>IEd&N*CAk5ZWZn{kLcv
> > zTPXR6J(Ptk9v29XMs!>address@hidden|d-=-y8nC}-vpHkcmNzW48#06mEID;+2
> > zf$gjq)Dq4Lnk~KTL(g67<address@hidden&address@hidden<R_F%w{=B4rS
> > YoS;O9e^J$jQ9`gV1ho{53Cj=3Um|f`5C8xG
> >