intel_idle: disable Atom/Lincroft HW C-state auto-demotion
authorLen Brown <len.brown@intel.com>
Wed, 16 Feb 2011 06:32:48 +0000 (01:32 -0500)
committerLen Brown <len.brown@intel.com>
Thu, 17 Feb 2011 22:08:48 +0000 (17:08 -0500)
Just as we had to disable auto-demotion for NHM/WSM,
we need to do the same for Atom (Lincroft version).

In particular, auto-demotion will prevent Lincroft
from entering the S0i3 idle power saving state.

https://bugzilla.kernel.org/show_bug.cgi?id=25252

Signed-off-by: Len Brown <len.brown@intel.com>
arch/x86/include/asm/msr-index.h
drivers/idle/intel_idle.c

index b75eeab2b1ea3400d51f018842e47eba3fddfb9f..43a18c77676d93a402bb83a5f7ac1f4b0e06debb 100644 (file)
@@ -39,6 +39,7 @@
 #define MSR_NHM_SNB_PKG_CST_CFG_CTL    0x000000e2
 #define NHM_C3_AUTO_DEMOTE             (1UL << 25)
 #define NHM_C1_AUTO_DEMOTE             (1UL << 26)
+#define ATM_LNC_C6_AUTO_DEMOTE         (1UL << 25)
 
 #define MSR_MTRRcap                    0x000000fe
 #define MSR_IA32_BBL_CR_CTL            0x00000119
index 32b25bcaf865d2cf64864b62ed6483764819a7e9..4a5c4a44ffb17a3ae0f44a489074ca99c33fa7ed 100644 (file)
@@ -345,8 +345,12 @@ static int intel_idle_probe(void)
                break;
 
        case 0x1C:      /* 28 - Atom Processor */
+               cpuidle_state_table = atom_cstates;
+               break;
+
        case 0x26:      /* 38 - Lincroft Atom Processor */
                cpuidle_state_table = atom_cstates;
+               auto_demotion_disable_flags = ATM_LNC_C6_AUTO_DEMOTE;
                break;
 
        case 0x2A:      /* SNB */