Patchwork [RFC,v2,14/21,SeaBIOS] acpi_dsdt: Support _OST dimm method

login
register
mail settings
Submitter Vasilis Liaskovitis
Date July 11, 2012, 10:31 a.m.
Message ID <1342002726-18258-15-git-send-email-vasilis.liaskovitis@profitbricks.com>
Download mbox | patch
Permalink /patch/170446/
State New
Headers show

Comments

Vasilis Liaskovitis - July 11, 2012, 10:31 a.m.
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 |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 src/ssdt-mem.dsl  |    4 ++++
 2 files changed, 50 insertions(+), 0 deletions(-)

Patch

diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl
index 5d3e92b..1c253ca 100644
--- a/src/acpi-dsdt.dsl
+++ b/src/acpi-dsdt.dsl
@@ -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,30 @@  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)
+                        }
+                    }
+                }
+                Case(0x1)
+                {
+                    Switch(And(Arg1, 0xFF)) {
+                        Case(0x0) {
+                            Store(Arg2, MIS)
+                        }
+                        Case(0x1) {
+                            Store(Arg2, MIF)
+                        }
+                    }
+                }
+            }
+        }
     }
 
 
diff --git a/src/ssdt-mem.dsl b/src/ssdt-mem.dsl
index ee322f0..041d301 100644
--- a/src/ssdt-mem.dsl
+++ b/src/ssdt-mem.dsl
@@ -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)
+        }
     }
 }