* [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs
@ 2014-10-15 7:45 Paolo Bonzini
2014-10-15 13:19 ` Igor Mammedov
2014-11-11 17:13 ` Paolo Bonzini
0 siblings, 2 replies; 7+ messages in thread
From: Paolo Bonzini @ 2014-10-15 7:45 UTC (permalink / raw)
To: qemu-devel; +Cc: imammedo, mst
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 <pbonzini@redhat.com>
---
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;f9%6$0h1o8ohlp@9mCv{%m~TWNzq2Mx79P^ozAww)^~<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&Kt4rh+@KNj%*s)nOkbZ~FTXLdP;+t%}eYE}f)E65mBhQT)7rk>L3%
z5ulnib8RT17w@u!Ds7)8G>IQ#`J9?hMG!`G$w2)$CR$p{^@S9>QB@~quPvbOwd$~{
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(HCTN6@Qppm3c2ztkfbm1uRjsD-bpKHwawk2pxBXMTtM{s%^7?%e<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>%5sYXCSR3Ot-Ig{7{hwcXBHK@pyYzajaRFsw59wH7V
zT#(8sihAG{q5K1W6c_$LFN7I?l!&#oe*0$M+nt^HrC)3?DV^Y=LJ0jfVmD}OwDoc{
z{GIMSK6n(#R^-_oEBqoX;d+i1xgBTK>v~qxY7i}Y1uN0}*iQ!LVgE!OoxU@Z-f{ml
zdD}ZCnsB=Q3V{)Rc0J+K3Sq3KMYb>XRmPrC!r-e7h*6DX&?J-PF)GNEOj#vNhnpx`
z5PplBFu5>sL>!Q}ADQ8>nz@oEOtfW0MW-uiNCmg|NI1Nfi)9-mFWRqRlD26)Ulh{r
z&Yh%49NtFBZ1&^sd5q_)Sb%DhR>zs62%f%)smkn=n8x8f+&-noL*dJS&Kaohha{6$
z#@U4wyHf6sjb=?i-pl1-<z7wrja|LYtg~%GRu=HFijijjKeK$4Y_XgT$Qdfx8r+fR
z@G3wzhg-Z|vJU_j?7C>~7kjS*bQQiTiV$!#0>E7q07yAUmjrnPD8@w=NBP7!M-Jl&
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(}@qEQYs=wkRv5-eVuB57<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>
z@VfNiEolA$|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<<*+>+u0mAN@dt
zv_=?fTG|a|eVwt#lrZ?3Q(`x?jCy3gmI-eZk_B0?nwqtdvm(MiPaU{@xH!iPP_U;R
zHEZOmWS5D7)Km;dk}4{=`;@5JrGhO7KzTNJ0he?g`^l=1?&wS<Lt?dsl;!f<_2U@p
zn^*vA-pF!65j}eODyAlvPhuLYo0z_!_8k$*h@KHJU-wB)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;&H`sRt3q7@vFRGISG5gb(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<k8sSE=Hqv%F1OPR?b@{0gro(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
tcmX@awSk2zIM^k`fQf;D@!~`-X-1!kYJqGVzAk=2JQIsQOs;1+3;?*r3h)2`
literal 1346
zcmZWp-%r#)5Z;vo%iaNZM@3>xxWwNWwZ|d)NUyD4q1#)#1u-SrCWd$z4b1@$ya^<l
z;Nyh{-%fM?hyG=pGwmH9_M!deoBd{Ic4sQ39o9z)p?<w-HDsl}AuI_TC4?ZxZ?QhQ
zNi<<dRRHS`AV(GY{oiMrsIDspuBud}Jk!9NK0r8E3GW}G_y{5@SySb)9ECjqFRHSZ
zV}wBju%4p_gB6zxo6km+tSe!;hAT}K9dRa{^-xm{*PeLe@HN9Qs*r^v!#p9;7vVGm
ziWZFy^8-VKnm(&!Xp#gyad)f}lOFk*>#-?)GO$I64iUz^STDQ{L`ahs+M2QgS(;$%
zHJ${a^niRvid}P?+|OVR;08o@eK(7au5=r86j!U8Plx$K?gnoNJIh`8!Z3{`sCNx2
z;ai_~+6R@^&R+6q|3js{wY#(5e!sO#G;aF=9zE375ImrH!r1KP%<$M|4~RaUR@fcy
zpaRP4v3ztmhnf){)V&J48u0QEd4R-*szis=X;8AvxFZ$it}kgsxo54C=<r4+mJUdo
z&N{rLRnb>+Tv|T4*eD@!bO$B<{;zwdF>as498}%uP8yJhuinKpNu#%88b=Rsb&u*#
zcmNl5NuT^^kyM%Qr1>OlYPdSq%~=kIKR(=RxK`uA(qgH`jFZQN6h`o<E<b1e>=|+c
zvwuKNP{<}BMK6P8fQ<~^_naX+4{*TFaC2j@_7=cKf@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!>swS-}07o@qi!rw|d-=-y8nC}-vpHkcmNzW48#06mEID;+2
zf$gjq)Dq4Lnk~KTL(g67<~uD$zGC!k%@R$&Y{L{6S916}iH@eEVJJ<R_F%w{=B4rS
YoS;O9e^J$jQ9`gV1ho{53Cj=3Um|f`5C8xG
--
2.1.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs 2014-10-15 7:45 [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs Paolo Bonzini @ 2014-10-15 13:19 ` Igor Mammedov 2014-10-15 13:34 ` Michael S. Tsirkin 2014-10-16 7:43 ` Paolo Bonzini 2014-11-11 17:13 ` Paolo Bonzini 1 sibling, 2 replies; 7+ messages in thread From: Igor Mammedov @ 2014-10-15 13:19 UTC (permalink / raw) To: Paolo Bonzini; +Cc: qemu-devel, mst On Wed, 15 Oct 2014 09:45:44 +0200 Paolo Bonzini <pbonzini@redhat.com> 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 <pbonzini@redhat.com> Moving static code to DSDT is resonable, hence Reviewed-by: Igor Mammedov <imammedo@redhat.com> 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. > --- > 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;f9%6$0h1o8ohlp@9mCv{%m~TWNzq2Mx79P^ozAww)^~<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&Kt4rh+@KNj%*s)nOkbZ~FTXLdP;+t%}eYE}f)E65mBhQT)7rk>L3% > z5ulnib8RT17w@u!Ds7)8G>IQ#`J9?hMG!`G$w2)$CR$p{^@S9>QB@~quPvbOwd$~{ > 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(HCTN6@Qppm3c2ztkfbm1uRjsD-bpKHwawk2pxBXMTtM{s%^7?%e<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>%5sYXCSR3Ot-Ig{7{hwcXBHK@pyYzajaRFsw59wH7V > zT#(8sihAG{q5K1W6c_$LFN7I?l!&#oe*0$M+nt^HrC)3?DV^Y=LJ0jfVmD}OwDoc{ > z{GIMSK6n(#R^-_oEBqoX;d+i1xgBTK>v~qxY7i}Y1uN0}*iQ!LVgE!OoxU@Z-f{ml > zdD}ZCnsB=Q3V{)Rc0J+K3Sq3KMYb>XRmPrC!r-e7h*6DX&?J-PF)GNEOj#vNhnpx` > z5PplBFu5>sL>!Q}ADQ8>nz@oEOtfW0MW-uiNCmg|NI1Nfi)9-mFWRqRlD26)Ulh{r > z&Yh%49NtFBZ1&^sd5q_)Sb%DhR>zs62%f%)smkn=n8x8f+&-noL*dJS&Kaohha{6$ > z#@U4wyHf6sjb=?i-pl1-<z7wrja|LYtg~%GRu=HFijijjKeK$4Y_XgT$Qdfx8r+fR > z@G3wzhg-Z|vJU_j?7C>~7kjS*bQQiTiV$!#0>E7q07yAUmjrnPD8@w=NBP7!M-Jl& > 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(}@qEQYs=wkRv5-eVuB57<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> > z@VfNiEolA$|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<<*+>+u0mAN@dt > zv_=?fTG|a|eVwt#lrZ?3Q(`x?jCy3gmI-eZk_B0?nwqtdvm(MiPaU{@xH!iPP_U;R > zHEZOmWS5D7)Km;dk}4{=`;@5JrGhO7KzTNJ0he?g`^l=1?&wS<Lt?dsl;!f<_2U@p > zn^*vA-pF!65j}eODyAlvPhuLYo0z_!_8k$*h@KHJU-wB)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;&H`sRt3q7@vFRGISG5gb(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<k8sSE=Hqv%F1OPR?b@{0gro(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 > tcmX@awSk2zIM^k`fQf;D@!~`-X-1!kYJqGVzAk=2JQIsQOs;1+3;?*r3h)2` > > literal 1346 > zcmZWp-%r#)5Z;vo%iaNZM@3>xxWwNWwZ|d)NUyD4q1#)#1u-SrCWd$z4b1@$ya^<l > z;Nyh{-%fM?hyG=pGwmH9_M!deoBd{Ic4sQ39o9z)p?<w-HDsl}AuI_TC4?ZxZ?QhQ > zNi<<dRRHS`AV(GY{oiMrsIDspuBud}Jk!9NK0r8E3GW}G_y{5@SySb)9ECjqFRHSZ > zV}wBju%4p_gB6zxo6km+tSe!;hAT}K9dRa{^-xm{*PeLe@HN9Qs*r^v!#p9;7vVGm > ziWZFy^8-VKnm(&!Xp#gyad)f}lOFk*>#-?)GO$I64iUz^STDQ{L`ahs+M2QgS(;$% > zHJ${a^niRvid}P?+|OVR;08o@eK(7au5=r86j!U8Plx$K?gnoNJIh`8!Z3{`sCNx2 > z;ai_~+6R@^&R+6q|3js{wY#(5e!sO#G;aF=9zE375ImrH!r1KP%<$M|4~RaUR@fcy > zpaRP4v3ztmhnf){)V&J48u0QEd4R-*szis=X;8AvxFZ$it}kgsxo54C=<r4+mJUdo > z&N{rLRnb>+Tv|T4*eD@!bO$B<{;zwdF>as498}%uP8yJhuinKpNu#%88b=Rsb&u*# > zcmNl5NuT^^kyM%Qr1>OlYPdSq%~=kIKR(=RxK`uA(qgH`jFZQN6h`o<E<b1e>=|+c > zvwuKNP{<}BMK6P8fQ<~^_naX+4{*TFaC2j@_7=cKf@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!>swS-}07o@qi!rw|d-=-y8nC}-vpHkcmNzW48#06mEID;+2 > zf$gjq)Dq4Lnk~KTL(g67<~uD$zGC!k%@R$&Y{L{6S916}iH@eEVJJ<R_F%w{=B4rS > YoS;O9e^J$jQ9`gV1ho{53Cj=3Um|f`5C8xG > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs 2014-10-15 13:19 ` Igor Mammedov @ 2014-10-15 13:34 ` Michael S. Tsirkin 2014-10-16 7:43 ` Paolo Bonzini 1 sibling, 0 replies; 7+ messages in thread From: Michael S. Tsirkin @ 2014-10-15 13:34 UTC (permalink / raw) To: Igor Mammedov; +Cc: Paolo Bonzini, qemu-devel On Wed, Oct 15, 2014 at 03:19:00PM +0200, Igor Mammedov wrote: > On Wed, 15 Oct 2014 09:45:44 +0200 > Paolo Bonzini <pbonzini@redhat.com> 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 <pbonzini@redhat.com> > Moving static code to DSDT is resonable, hence > > Reviewed-by: Igor Mammedov <imammedo@redhat.com> > > 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;f9%6$0h1o8ohlp@9mCv{%m~TWNzq2Mx79P^ozAww)^~<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&Kt4rh+@KNj%*s)nOkbZ~FTXLdP;+t%}eYE}f)E65mBhQT)7rk>L3% > > z5ulnib8RT17w@u!Ds7)8G>IQ#`J9?hMG!`G$w2)$CR$p{^@S9>QB@~quPvbOwd$~{ > > 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(HCTN6@Qppm3c2ztkfbm1uRjsD-bpKHwawk2pxBXMTtM{s%^7?%e<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>%5sYXCSR3Ot-Ig{7{hwcXBHK@pyYzajaRFsw59wH7V > > zT#(8sihAG{q5K1W6c_$LFN7I?l!&#oe*0$M+nt^HrC)3?DV^Y=LJ0jfVmD}OwDoc{ > > z{GIMSK6n(#R^-_oEBqoX;d+i1xgBTK>v~qxY7i}Y1uN0}*iQ!LVgE!OoxU@Z-f{ml > > zdD}ZCnsB=Q3V{)Rc0J+K3Sq3KMYb>XRmPrC!r-e7h*6DX&?J-PF)GNEOj#vNhnpx` > > z5PplBFu5>sL>!Q}ADQ8>nz@oEOtfW0MW-uiNCmg|NI1Nfi)9-mFWRqRlD26)Ulh{r > > z&Yh%49NtFBZ1&^sd5q_)Sb%DhR>zs62%f%)smkn=n8x8f+&-noL*dJS&Kaohha{6$ > > z#@U4wyHf6sjb=?i-pl1-<z7wrja|LYtg~%GRu=HFijijjKeK$4Y_XgT$Qdfx8r+fR > > z@G3wzhg-Z|vJU_j?7C>~7kjS*bQQiTiV$!#0>E7q07yAUmjrnPD8@w=NBP7!M-Jl& > > 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(}@qEQYs=wkRv5-eVuB57<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> > > z@VfNiEolA$|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<<*+>+u0mAN@dt > > zv_=?fTG|a|eVwt#lrZ?3Q(`x?jCy3gmI-eZk_B0?nwqtdvm(MiPaU{@xH!iPP_U;R > > zHEZOmWS5D7)Km;dk}4{=`;@5JrGhO7KzTNJ0he?g`^l=1?&wS<Lt?dsl;!f<_2U@p > > zn^*vA-pF!65j}eODyAlvPhuLYo0z_!_8k$*h@KHJU-wB)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;&H`sRt3q7@vFRGISG5gb(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<k8sSE=Hqv%F1OPR?b@{0gro(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 > > tcmX@awSk2zIM^k`fQf;D@!~`-X-1!kYJqGVzAk=2JQIsQOs;1+3;?*r3h)2` > > > > literal 1346 > > zcmZWp-%r#)5Z;vo%iaNZM@3>xxWwNWwZ|d)NUyD4q1#)#1u-SrCWd$z4b1@$ya^<l > > z;Nyh{-%fM?hyG=pGwmH9_M!deoBd{Ic4sQ39o9z)p?<w-HDsl}AuI_TC4?ZxZ?QhQ > > zNi<<dRRHS`AV(GY{oiMrsIDspuBud}Jk!9NK0r8E3GW}G_y{5@SySb)9ECjqFRHSZ > > zV}wBju%4p_gB6zxo6km+tSe!;hAT}K9dRa{^-xm{*PeLe@HN9Qs*r^v!#p9;7vVGm > > ziWZFy^8-VKnm(&!Xp#gyad)f}lOFk*>#-?)GO$I64iUz^STDQ{L`ahs+M2QgS(;$% > > zHJ${a^niRvid}P?+|OVR;08o@eK(7au5=r86j!U8Plx$K?gnoNJIh`8!Z3{`sCNx2 > > z;ai_~+6R@^&R+6q|3js{wY#(5e!sO#G;aF=9zE375ImrH!r1KP%<$M|4~RaUR@fcy > > zpaRP4v3ztmhnf){)V&J48u0QEd4R-*szis=X;8AvxFZ$it}kgsxo54C=<r4+mJUdo > > z&N{rLRnb>+Tv|T4*eD@!bO$B<{;zwdF>as498}%uP8yJhuinKpNu#%88b=Rsb&u*# > > zcmNl5NuT^^kyM%Qr1>OlYPdSq%~=kIKR(=RxK`uA(qgH`jFZQN6h`o<E<b1e>=|+c > > zvwuKNP{<}BMK6P8fQ<~^_naX+4{*TFaC2j@_7=cKf@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!>swS-}07o@qi!rw|d-=-y8nC}-vpHkcmNzW48#06mEID;+2 > > zf$gjq)Dq4Lnk~KTL(g67<~uD$zGC!k%@R$&Y{L{6S916}iH@eEVJJ<R_F%w{=B4rS > > YoS;O9e^J$jQ9`gV1ho{53Cj=3Um|f`5C8xG > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs 2014-10-15 13:19 ` Igor Mammedov 2014-10-15 13:34 ` Michael S. Tsirkin @ 2014-10-16 7:43 ` Paolo Bonzini 1 sibling, 0 replies; 7+ messages in thread From: Paolo Bonzini @ 2014-10-16 7:43 UTC (permalink / raw) To: Igor Mammedov; +Cc: qemu-devel, mst Il 15/10/2014 15:19, Igor Mammedov ha scritto: > 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. SSDT is simple enough that there shouldn't be differences. If this were a problem, we could unconditionally use .hex.generated files or move the generation entirely to C, similar to what we do for bridges and what SeaBIOS used to do. Paolo > 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. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs 2014-10-15 7:45 [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs Paolo Bonzini 2014-10-15 13:19 ` Igor Mammedov @ 2014-11-11 17:13 ` Paolo Bonzini 2014-11-20 6:05 ` Paolo Bonzini 1 sibling, 1 reply; 7+ messages in thread From: Paolo Bonzini @ 2014-11-11 17:13 UTC (permalink / raw) To: qemu-devel; +Cc: imammedo, mst On 15/10/2014 09:45, Paolo Bonzini 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 <pbonzini@redhat.com> > --- > 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;f9%6$0h1o8ohlp@9mCv{%m~TWNzq2Mx79P^ozAww)^~<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&Kt4rh+@KNj%*s)nOkbZ~FTXLdP;+t%}eYE}f)E65mBhQT)7rk>L3% > z5ulnib8RT17w@u!Ds7)8G>IQ#`J9?hMG!`G$w2)$CR$p{^@S9>QB@~quPvbOwd$~{ > 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(HCTN6@Qppm3c2ztkfbm1uRjsD-bpKHwawk2pxBXMTtM{s%^7?%e<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>%5sYXCSR3Ot-Ig{7{hwcXBHK@pyYzajaRFsw59wH7V > zT#(8sihAG{q5K1W6c_$LFN7I?l!&#oe*0$M+nt^HrC)3?DV^Y=LJ0jfVmD}OwDoc{ > z{GIMSK6n(#R^-_oEBqoX;d+i1xgBTK>v~qxY7i}Y1uN0}*iQ!LVgE!OoxU@Z-f{ml > zdD}ZCnsB=Q3V{)Rc0J+K3Sq3KMYb>XRmPrC!r-e7h*6DX&?J-PF)GNEOj#vNhnpx` > z5PplBFu5>sL>!Q}ADQ8>nz@oEOtfW0MW-uiNCmg|NI1Nfi)9-mFWRqRlD26)Ulh{r > z&Yh%49NtFBZ1&^sd5q_)Sb%DhR>zs62%f%)smkn=n8x8f+&-noL*dJS&Kaohha{6$ > z#@U4wyHf6sjb=?i-pl1-<z7wrja|LYtg~%GRu=HFijijjKeK$4Y_XgT$Qdfx8r+fR > z@G3wzhg-Z|vJU_j?7C>~7kjS*bQQiTiV$!#0>E7q07yAUmjrnPD8@w=NBP7!M-Jl& > 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(}@qEQYs=wkRv5-eVuB57<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> > z@VfNiEolA$|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<<*+>+u0mAN@dt > zv_=?fTG|a|eVwt#lrZ?3Q(`x?jCy3gmI-eZk_B0?nwqtdvm(MiPaU{@xH!iPP_U;R > zHEZOmWS5D7)Km;dk}4{=`;@5JrGhO7KzTNJ0he?g`^l=1?&wS<Lt?dsl;!f<_2U@p > zn^*vA-pF!65j}eODyAlvPhuLYo0z_!_8k$*h@KHJU-wB)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;&H`sRt3q7@vFRGISG5gb(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<k8sSE=Hqv%F1OPR?b@{0gro(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 > tcmX@awSk2zIM^k`fQf;D@!~`-X-1!kYJqGVzAk=2JQIsQOs;1+3;?*r3h)2` > > literal 1346 > zcmZWp-%r#)5Z;vo%iaNZM@3>xxWwNWwZ|d)NUyD4q1#)#1u-SrCWd$z4b1@$ya^<l > z;Nyh{-%fM?hyG=pGwmH9_M!deoBd{Ic4sQ39o9z)p?<w-HDsl}AuI_TC4?ZxZ?QhQ > zNi<<dRRHS`AV(GY{oiMrsIDspuBud}Jk!9NK0r8E3GW}G_y{5@SySb)9ECjqFRHSZ > zV}wBju%4p_gB6zxo6km+tSe!;hAT}K9dRa{^-xm{*PeLe@HN9Qs*r^v!#p9;7vVGm > ziWZFy^8-VKnm(&!Xp#gyad)f}lOFk*>#-?)GO$I64iUz^STDQ{L`ahs+M2QgS(;$% > zHJ${a^niRvid}P?+|OVR;08o@eK(7au5=r86j!U8Plx$K?gnoNJIh`8!Z3{`sCNx2 > z;ai_~+6R@^&R+6q|3js{wY#(5e!sO#G;aF=9zE375ImrH!r1KP%<$M|4~RaUR@fcy > zpaRP4v3ztmhnf){)V&J48u0QEd4R-*szis=X;8AvxFZ$it}kgsxo54C=<r4+mJUdo > z&N{rLRnb>+Tv|T4*eD@!bO$B<{;zwdF>as498}%uP8yJhuinKpNu#%88b=Rsb&u*# > zcmNl5NuT^^kyM%Qr1>OlYPdSq%~=kIKR(=RxK`uA(qgH`jFZQN6h`o<E<b1e>=|+c > zvwuKNP{<}BMK6P8fQ<~^_naX+4{*TFaC2j@_7=cKf@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!>swS-}07o@qi!rw|d-=-y8nC}-vpHkcmNzW48#06mEID;+2 > zf$gjq)Dq4Lnk~KTL(g67<~uD$zGC!k%@R$&Y{L{6S916}iH@eEVJJ<R_F%w{=B4rS > YoS;O9e^J$jQ9`gV1ho{53Cj=3Um|f`5C8xG > Ping? Paolo ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs 2014-11-11 17:13 ` Paolo Bonzini @ 2014-11-20 6:05 ` Paolo Bonzini 2014-11-20 6:57 ` Michael S. Tsirkin 0 siblings, 1 reply; 7+ messages in thread From: Paolo Bonzini @ 2014-11-20 6:05 UTC (permalink / raw) To: qemu-devel; +Cc: imammedo, mst On 11/11/2014 18:13, Paolo Bonzini wrote: > On 15/10/2014 09:45, Paolo Bonzini 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 <pbonzini@redhat.com> >> --- >> 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;f9%6$0h1o8ohlp@9mCv{%m~TWNzq2Mx79P^ozAww)^~<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&Kt4rh+@KNj%*s)nOkbZ~FTXLdP;+t%}eYE}f)E65mBhQT)7rk>L3% >> z5ulnib8RT17w@u!Ds7)8G>IQ#`J9?hMG!`G$w2)$CR$p{^@S9>QB@~quPvbOwd$~{ >> 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(HCTN6@Qppm3c2ztkfbm1uRjsD-bpKHwawk2pxBXMTtM{s%^7?%e<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>%5sYXCSR3Ot-Ig{7{hwcXBHK@pyYzajaRFsw59wH7V >> zT#(8sihAG{q5K1W6c_$LFN7I?l!&#oe*0$M+nt^HrC)3?DV^Y=LJ0jfVmD}OwDoc{ >> z{GIMSK6n(#R^-_oEBqoX;d+i1xgBTK>v~qxY7i}Y1uN0}*iQ!LVgE!OoxU@Z-f{ml >> zdD}ZCnsB=Q3V{)Rc0J+K3Sq3KMYb>XRmPrC!r-e7h*6DX&?J-PF)GNEOj#vNhnpx` >> z5PplBFu5>sL>!Q}ADQ8>nz@oEOtfW0MW-uiNCmg|NI1Nfi)9-mFWRqRlD26)Ulh{r >> z&Yh%49NtFBZ1&^sd5q_)Sb%DhR>zs62%f%)smkn=n8x8f+&-noL*dJS&Kaohha{6$ >> z#@U4wyHf6sjb=?i-pl1-<z7wrja|LYtg~%GRu=HFijijjKeK$4Y_XgT$Qdfx8r+fR >> z@G3wzhg-Z|vJU_j?7C>~7kjS*bQQiTiV$!#0>E7q07yAUmjrnPD8@w=NBP7!M-Jl& >> 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(}@qEQYs=wkRv5-eVuB57<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> >> z@VfNiEolA$|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<<*+>+u0mAN@dt >> zv_=?fTG|a|eVwt#lrZ?3Q(`x?jCy3gmI-eZk_B0?nwqtdvm(MiPaU{@xH!iPP_U;R >> zHEZOmWS5D7)Km;dk}4{=`;@5JrGhO7KzTNJ0he?g`^l=1?&wS<Lt?dsl;!f<_2U@p >> zn^*vA-pF!65j}eODyAlvPhuLYo0z_!_8k$*h@KHJU-wB)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;&H`sRt3q7@vFRGISG5gb(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<k8sSE=Hqv%F1OPR?b@{0gro(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 >> tcmX@awSk2zIM^k`fQf;D@!~`-X-1!kYJqGVzAk=2JQIsQOs;1+3;?*r3h)2` >> >> literal 1346 >> zcmZWp-%r#)5Z;vo%iaNZM@3>xxWwNWwZ|d)NUyD4q1#)#1u-SrCWd$z4b1@$ya^<l >> z;Nyh{-%fM?hyG=pGwmH9_M!deoBd{Ic4sQ39o9z)p?<w-HDsl}AuI_TC4?ZxZ?QhQ >> zNi<<dRRHS`AV(GY{oiMrsIDspuBud}Jk!9NK0r8E3GW}G_y{5@SySb)9ECjqFRHSZ >> zV}wBju%4p_gB6zxo6km+tSe!;hAT}K9dRa{^-xm{*PeLe@HN9Qs*r^v!#p9;7vVGm >> ziWZFy^8-VKnm(&!Xp#gyad)f}lOFk*>#-?)GO$I64iUz^STDQ{L`ahs+M2QgS(;$% >> zHJ${a^niRvid}P?+|OVR;08o@eK(7au5=r86j!U8Plx$K?gnoNJIh`8!Z3{`sCNx2 >> z;ai_~+6R@^&R+6q|3js{wY#(5e!sO#G;aF=9zE375ImrH!r1KP%<$M|4~RaUR@fcy >> zpaRP4v3ztmhnf){)V&J48u0QEd4R-*szis=X;8AvxFZ$it}kgsxo54C=<r4+mJUdo >> z&N{rLRnb>+Tv|T4*eD@!bO$B<{;zwdF>as498}%uP8yJhuinKpNu#%88b=Rsb&u*# >> zcmNl5NuT^^kyM%Qr1>OlYPdSq%~=kIKR(=RxK`uA(qgH`jFZQN6h`o<E<b1e>=|+c >> zvwuKNP{<}BMK6P8fQ<~^_naX+4{*TFaC2j@_7=cKf@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!>swS-}07o@qi!rw|d-=-y8nC}-vpHkcmNzW48#06mEID;+2 >> zf$gjq)Dq4Lnk~KTL(g67<~uD$zGC!k%@R$&Y{L{6S916}iH@eEVJJ<R_F%w{=B4rS >> YoS;O9e^J$jQ9`gV1ho{53Cj=3Um|f`5C8xG >> > > Ping? Ping?? Paolo ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs 2014-11-20 6:05 ` Paolo Bonzini @ 2014-11-20 6:57 ` Michael S. Tsirkin 0 siblings, 0 replies; 7+ messages in thread From: Michael S. Tsirkin @ 2014-11-20 6:57 UTC (permalink / raw) To: Paolo Bonzini; +Cc: imammedo, qemu-devel On Thu, Nov 20, 2014 at 07:05:17AM +0100, Paolo Bonzini wrote: > > > On 11/11/2014 18:13, Paolo Bonzini wrote: > > On 15/10/2014 09:45, Paolo Bonzini 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 <pbonzini@redhat.com> > >> --- > >> v1->v2: do not define the same Device twice (Igor) I have this queued, will be sent soon with the rest of the patches. -- MST ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-11-20 6:58 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-10-15 7:45 [Qemu-devel] [PATCH v2] target-i386: move generic memory hotplug methods to DSDTs Paolo Bonzini 2014-10-15 13:19 ` Igor Mammedov 2014-10-15 13:34 ` Michael S. Tsirkin 2014-10-16 7:43 ` Paolo Bonzini 2014-11-11 17:13 ` Paolo Bonzini 2014-11-20 6:05 ` Paolo Bonzini 2014-11-20 6:57 ` Michael S. Tsirkin
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.