All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH] target-i386: move generic memory hotplug methods to DSDTs
Date: Tue, 7 Oct 2014 13:39:32 +0200	[thread overview]
Message-ID: <20141007133932.7ebcdad4@nial.usersys.redhat.com> (raw)
In-Reply-To: <1412607113-13512-1-git-send-email-pbonzini@redhat.com>

On Mon,  6 Oct 2014 16:51:53 +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.
> 
> This is not tested well and is still missing update of "make check"
> data, but I wanted to throw this out for an early look.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  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               | 156 -------
>  hw/i386/ssdt-misc.hex.generated     | 787 +----------------------------------
>  8 files changed, 1773 insertions(+), 952 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..2d50f0a 100644
> --- a/hw/i386/ssdt-misc.dsl
> +++ b/hw/i386/ssdt-misc.dsl
> @@ -118,166 +118,10 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC", "BXSSDTSUSP", 0x1)
>          }
>      }
>  
> -    External(MEMORY_SLOT_NOTIFY_METHOD, MethodObj)
>      Scope(\_SB.PCI0) {
>          Device(MEMORY_HOTPLUG_DEVICE) {
keeping it as device here triggers duplicate device BSOD in XP
it should be a scope or a just var at / scope which a few bytes shorter

following patch on top of this fixes issue:

diff --git a/hw/i386/ssdt-misc.dsl b/hw/i386/ssdt-misc.dsl
index 2d50f0a..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,11 +119,4 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC", "BXSSDTSUSP", 0x1)
             }
         }
     }
-
-    Scope(\_SB.PCI0) {
-        Device(MEMORY_HOTPLUG_DEVICE) {
-            ACPI_EXTRACT_NAME_DWORD_CONST ssdt_mctrl_nr_slots
-            Name(MEMORY_SLOTS_NUMBER, 0x12345678)
-        } // Device()
-    } // Scope()
 }



> -            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..62f45bb 100644
> --- a/hw/i386/ssdt-misc.hex.generated
> +++ b/hw/i386/ssdt-misc.hex.generated
> @@ -5,7 +5,7 @@ static unsigned char acpi_s4_pkg[] = {
>  0x8f
>  };
>  static unsigned short ssdt_mctrl_nr_slots[] = {
> -0x1aa
> +0x17b
>  };
>  static unsigned char acpi_s3_name[] = {
>  0x7c
> @@ -21,12 +21,12 @@ static unsigned char ssdp_misc_aml[] = {
>  0x53,
>  0x44,
>  0x54,
> -0x7e,
> -0x4,
> +0x7f,
> +0x1,
>  0x0,
>  0x0,
>  0x1,
> -0x8b,
> +0xd0,
>  0x42,
>  0x58,
>  0x50,
> @@ -49,9 +49,9 @@ static unsigned char ssdp_misc_aml[] = {
>  0x4e,
>  0x54,
>  0x4c,
> -0x15,
> -0x11,
> -0x13,
> +0x28,
> +0x8,
> +0x14,
>  0x20,
>  0x10,
>  0x42,
> @@ -372,8 +372,7 @@ static unsigned char ssdp_misc_aml[] = {
>  0x4d,
>  0x58,
>  0x10,
> -0x4b,
> -0x31,
> +0x1c,
>  0x5c,
>  0x2e,
>  0x5f,
> @@ -386,57 +385,11 @@ static unsigned char ssdp_misc_aml[] = {
>  0x30,
>  0x5b,
>  0x82,
> +0xf,
>  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,
> @@ -446,727 +399,7 @@ static unsigned char ssdp_misc_aml[] = {
>  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
> +0x12
>  };
>  static unsigned char ssdt_isa_pest[] = {
>  0xd0

      reply	other threads:[~2014-10-07 11:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-06 14:51 [Qemu-devel] [RFC PATCH] target-i386: move generic memory hotplug methods to DSDTs Paolo Bonzini
2014-10-07 11:39 ` Igor Mammedov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141007133932.7ebcdad4@nial.usersys.redhat.com \
    --to=imammedo@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is 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.