@@ -762,6 +762,28 @@ DefinitionBlock (
MPE, 8
}
+
+ /* Memory hot-remove notify failure byte */
+ OperationRegion(MEEF, SystemIO, 0xafa1, 1)
+ Field (MEEF, ByteAcc, NoLock, Preserve)
+ {
+ MEF, 8
+ }
+
+ /* Memory hot-add notify success byte */
+ OperationRegion(MPIS, SystemIO, 0xafa2, 1)
+ Field (MPIS, ByteAcc, NoLock, Preserve)
+ {
+ MIS, 8
+ }
+
+ /* Memory hot-add notify failure byte */
+ OperationRegion(MPIF, SystemIO, 0xafa3, 1)
+ Field (MPIF, ByteAcc, NoLock, Preserve)
+ {
+ MIF, 8
+ }
+
Method(MESC, 0) {
// Local5 = active memdevice bitmap
Store (MES, Local5)
@@ -802,6 +824,34 @@ DefinitionBlock (
Store(Arg0, MPE)
Sleep(200)
}
+ Method (MOST, 3, Serialized) {
+ // _OST method - OS status indication
+ Switch (And(Arg0, 0xFF)) {
+ Case(0x3)
+ {
+ Switch(And(Arg1, 0xFF)) {
+ Case(0x1) {
+ Store(Arg2, MEF)
+ // Revert MEON flag for this memory device to one
+ Store(One, Index(MEON, Arg2))
+ }
+ }
+ }
+ Case(0x1)
+ {
+ Switch(And(Arg1, 0xFF)) {
+ Case(0x0) {
+ Store(Arg2, MIS)
+ }
+ Case(0x1) {
+ Store(Arg2, MIF)
+ // Revert MEON flag for this memory device to zero
+ Store(Zero, Index(MEON, Arg2))
+ }
+ }
+ }
+ }
+ }
}
@@ -38,6 +38,7 @@ DefinitionBlock ("ssdt-mem.aml", "SSDT", 0x02, "BXPC", "CSSDT", 0x1)
External(CMST, MethodObj)
External(MPEJ, MethodObj)
+ External(MOST, MethodObj)
Name(_CRS, ResourceTemplate() {
QwordMemory(
@@ -60,6 +61,9 @@ DefinitionBlock ("ssdt-mem.aml", "SSDT", 0x02, "BXPC", "CSSDT", 0x1)
Method (_EJ0, 1, NotSerialized) {
MPEJ(ID, Arg0)
}
+ Method (_OST, 3) {
+ MOST(Arg0, Arg1, ID)
+ }
}
}
Add support for _OST method. _OST method will write into the correct I/O byte to signal success / failure of hot-add or hot-remove to qemu. Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com> --- src/acpi-dsdt.dsl | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/ssdt-mem.dsl | 4 ++++ 2 files changed, 54 insertions(+), 0 deletions(-)