[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RESEND PATCH v3 7/8] pc, acpi bios: Add memory hot unp
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [RESEND PATCH v3 7/8] pc, acpi bios: Add memory hot unplug interface. |
Date: |
Thu, 4 Sep 2014 15:53:53 +0200 |
On Wed, 27 Aug 2014 16:08:38 +0800
Tang Chen <address@hidden> wrote:
> From: Hu Tao <address@hidden>
>
> This patch implements MEMORY_SLOT_EJECT_METHOD according to ACPI spec.
>
> Signed-off-by: Hu Tao <address@hidden>
> Signed-off-by: Tang Chen <address@hidden>
> ---
> hw/i386/ssdt-mem.dsl | 5 +++++
> hw/i386/ssdt-misc.dsl | 15 ++++++++++++++-
> include/hw/acpi/pc-hotplug.h | 2 ++
> 3 files changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/hw/i386/ssdt-mem.dsl b/hw/i386/ssdt-mem.dsl
> index 22ff5dd..1416639 100644
> --- a/hw/i386/ssdt-mem.dsl
> +++ b/hw/i386/ssdt-mem.dsl
> @@ -43,6 +43,7 @@ DefinitionBlock ("ssdt-mem.aml", "SSDT", 0x02, "BXPC",
> "CSSDT", 0x1)
> External(\_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_STATUS_METHOD,
> MethodObj)
> External(\_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_OST_METHOD,
> MethodObj)
> External(\_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_PROXIMITY_METHOD,
> MethodObj)
> + External(\_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_EJECT_METHOD,
> MethodObj)
>
> Scope(\_SB) {
> /* v------------------ DO NOT EDIT ------------------v */
> @@ -72,6 +73,10 @@ DefinitionBlock ("ssdt-mem.aml", "SSDT", 0x02, "BXPC",
> "CSSDT", 0x1)
> Method(_OST, 3) {
> \_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_OST_METHOD(_UID,
> Arg0, Arg1, Arg2)
> }
> +
> + Method(_EJ0, 1) {
> +
> \_SB.PCI0.MEMORY_HOTPLUG_DEVICE.MEMORY_SLOT_EJECT_METHOD(_UID, Arg0)
> + }
> }
> }
> }
> diff --git a/hw/i386/ssdt-misc.dsl b/hw/i386/ssdt-misc.dsl
> index 0fd4480..79228ac 100644
> --- a/hw/i386/ssdt-misc.dsl
> +++ b/hw/i386/ssdt-misc.dsl
> @@ -156,6 +156,7 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC",
> "BXSSDTSUSP", 0x1)
> 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
> + MEMORY_SLOT_REMOVE_EVENT, 1, // 1 if DIMM has a remove
> request, read only
> }
>
> Mutex (MEMORY_SLOT_LOCK, 0)
> @@ -174,11 +175,16 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC",
> "BXSSDTSUSP", 0x1)
> 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
> +
> + If (LEqual(MEMORY_SLOT_REMOVE_EVENT, One)) { // Ejection
> request
please use ELSE IF here, otherwise OSPM could try to do insert/remove
simultaneously
> + MTFY(Local0, 3)
use MEMORY_SLOT_NOTIFY_METHOD here
> + }
> +
> Add(Local0, One, Local0) // goto next DIMM
> }
> Release(MEMORY_SLOT_LOCK)
> @@ -278,6 +284,13 @@ DefinitionBlock ("ssdt-misc.aml", "SSDT", 0x01, "BXPC",
> "BXSSDTSUSP", 0x1)
> Store(Arg2, MEMORY_SLOT_OST_STATUS)
> Release(MEMORY_SLOT_LOCK)
> }
> +
> + Method(MEMORY_SLOT_EJECT_METHOD, 2) {
> + Acquire(MLCK, 0xFFFF)
> + Store(ToInteger(Arg0), MSEL) // select DIMM
> + Store(One, MEMORY_SLOT_REMOVE_EVENT)
> + Release(MLCK)
use macros here too, see Method(MEMORY_SLOT_OST_METHOD, 4) for example
> + }
> } // Device()
> } // Scope()
> }
> diff --git a/include/hw/acpi/pc-hotplug.h b/include/hw/acpi/pc-hotplug.h
> index b9db295..b3770a1 100644
> --- a/include/hw/acpi/pc-hotplug.h
> +++ b/include/hw/acpi/pc-hotplug.h
> @@ -42,6 +42,7 @@
> #define MEMORY_SLOT_PROXIMITY MPX
> #define MEMORY_SLOT_ENABLED MES
> #define MEMORY_SLOT_INSERT_EVENT MINS
> +#define MEMORY_SLOT_REMOVE_EVENT MRMV
> #define MEMORY_SLOT_SLECTOR MSEL
> #define MEMORY_SLOT_OST_EVENT MOEV
> #define MEMORY_SLOT_OST_STATUS MOSC
> @@ -50,6 +51,7 @@
> #define MEMORY_SLOT_CRS_METHOD MCRS
> #define MEMORY_SLOT_OST_METHOD MOST
> #define MEMORY_SLOT_PROXIMITY_METHOD MPXM
> +#define MEMORY_SLOT_EJECT_METHOD MDEJ
maybe s/MDEJ/MEJ0/ to be clearer what eject method is implied
> #define MEMORY_SLOT_NOTIFY_METHOD MTFY
> #define MEMORY_SLOT_SCAN_METHOD MSCN
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [RESEND PATCH v3 7/8] pc, acpi bios: Add memory hot unplug interface.,
Igor Mammedov <=