Inform C2 state support via ACPI's CST per-processor package.

Signed-off-by: Marcelo Tosatti <[EMAIL PROTECTED]>

Index: kvm-userspace.tip/bios/acpi-dsdt.dsl
===================================================================
--- kvm-userspace.tip.orig/bios/acpi-dsdt.dsl
+++ kvm-userspace.tip/bios/acpi-dsdt.dsl
@@ -33,6 +33,11 @@ DefinitionBlock (
                PRU, 8,
                PRD, 8,
        }
+       OperationRegion(PWNO, SystemIO, 0xb040, 0x02)
+       Field (PWNO, WordAcc, NoLock, WriteAsZeros)
+       {
+               PWC, 16,
+       }
 
 #define gen_processor(nr, name)                                            \
        Processor (CPU##name, nr, 0x0000b010, 0x06) {                       \
@@ -44,11 +49,23 @@ DefinitionBlock (
             Method (_STA) {                                                 \
                 Return(0xF)                                                 \
             }                                                               \
+            Name(_CST, Package() {                                          \
+                1, Package() {                                              \
+                    ResourceTemplate() {Register(SystemIO, 8, 0, 0xb014)},  \
+                                        2, 2, 300},                         \
+                })                                                          \
         }                                                                   \
 
 
 
-        Processor (CPU0, 0x00, 0x0000b010, 0x06) {Method (_STA) { Return(0xF)}}
+        Processor (CPU0, 0x00, 0x0000b010, 0x06) {
+                        Method (_STA) { Return(0xF)}
+                        Name(_CST, Package() {
+                        1, Package() {
+                          ResourceTemplate() {Register(SystemIO, 8, 0, 
0xb014)},
+                                              2, 2, 300},
+                        })
+                  }
        gen_processor(1, 1)
        gen_processor(2, 2)
        gen_processor(3, 3)
@@ -747,7 +764,29 @@ DefinitionBlock (
         Method(_L05) {
             Return(0x01)
         }
+#define gen_power_notify(nr, name)                                            \
+                Store (0xfffff,                                               \
+                       Index (DeRefOf (Index (\_PR.CPU##name._CST, 1)), 2))   \
+                Notify(\_PR.CPU##name, 0x81)                                  \
+
         Method(_L06) {
+            If (And(\_PR.PWC, 0x1)) {
+                gen_power_notify(0, 0)
+                gen_power_notify(1, 1)
+                gen_power_notify(2, 2)
+                gen_power_notify(3, 3)
+                gen_power_notify(4, 4)
+                gen_power_notify(5, 5)
+                gen_power_notify(6, 6)
+                gen_power_notify(7, 7)
+                gen_power_notify(8, 8)
+                gen_power_notify(9, 9)
+                gen_power_notify(10, A)
+                gen_power_notify(11, B)
+                gen_power_notify(12, C)
+                gen_power_notify(13, D)
+                gen_power_notify(14, E)
+            }
             Return(0x01)
         }
         Method(_L07) {

-- 

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to