diff options
Diffstat (limited to 'drivers/idle/intel_idle.c')
| -rw-r--r-- | drivers/idle/intel_idle.c | 190 | 
1 files changed, 95 insertions, 95 deletions
| diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index c2ae819a871c..5dc7ea4b6bc4 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c @@ -97,7 +97,7 @@ static const struct idle_cpu *icpu;  static struct cpuidle_device __percpu *intel_idle_cpuidle_devices;  static int intel_idle(struct cpuidle_device *dev,  			struct cpuidle_driver *drv, int index); -static void intel_idle_freeze(struct cpuidle_device *dev, +static void intel_idle_s2idle(struct cpuidle_device *dev,  			      struct cpuidle_driver *drv, int index);  static struct cpuidle_state *cpuidle_state_table; @@ -132,7 +132,7 @@ static struct cpuidle_state nehalem_cstates[] = {  		.exit_latency = 3,  		.target_residency = 6,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -140,7 +140,7 @@ static struct cpuidle_state nehalem_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -148,7 +148,7 @@ static struct cpuidle_state nehalem_cstates[] = {  		.exit_latency = 20,  		.target_residency = 80,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -156,7 +156,7 @@ static struct cpuidle_state nehalem_cstates[] = {  		.exit_latency = 200,  		.target_residency = 800,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -169,7 +169,7 @@ static struct cpuidle_state snb_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -177,7 +177,7 @@ static struct cpuidle_state snb_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -185,7 +185,7 @@ static struct cpuidle_state snb_cstates[] = {  		.exit_latency = 80,  		.target_residency = 211,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -193,7 +193,7 @@ static struct cpuidle_state snb_cstates[] = {  		.exit_latency = 104,  		.target_residency = 345,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7",  		.desc = "MWAIT 0x30", @@ -201,7 +201,7 @@ static struct cpuidle_state snb_cstates[] = {  		.exit_latency = 109,  		.target_residency = 345,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -214,7 +214,7 @@ static struct cpuidle_state byt_cstates[] = {  		.exit_latency = 1,  		.target_residency = 1,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6N",  		.desc = "MWAIT 0x58", @@ -222,7 +222,7 @@ static struct cpuidle_state byt_cstates[] = {  		.exit_latency = 300,  		.target_residency = 275,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6S",  		.desc = "MWAIT 0x52", @@ -230,7 +230,7 @@ static struct cpuidle_state byt_cstates[] = {  		.exit_latency = 500,  		.target_residency = 560,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7",  		.desc = "MWAIT 0x60", @@ -238,7 +238,7 @@ static struct cpuidle_state byt_cstates[] = {  		.exit_latency = 1200,  		.target_residency = 4000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7S",  		.desc = "MWAIT 0x64", @@ -246,7 +246,7 @@ static struct cpuidle_state byt_cstates[] = {  		.exit_latency = 10000,  		.target_residency = 20000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -259,7 +259,7 @@ static struct cpuidle_state cht_cstates[] = {  		.exit_latency = 1,  		.target_residency = 1,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6N",  		.desc = "MWAIT 0x58", @@ -267,7 +267,7 @@ static struct cpuidle_state cht_cstates[] = {  		.exit_latency = 80,  		.target_residency = 275,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6S",  		.desc = "MWAIT 0x52", @@ -275,7 +275,7 @@ static struct cpuidle_state cht_cstates[] = {  		.exit_latency = 200,  		.target_residency = 560,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7",  		.desc = "MWAIT 0x60", @@ -283,7 +283,7 @@ static struct cpuidle_state cht_cstates[] = {  		.exit_latency = 1200,  		.target_residency = 4000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7S",  		.desc = "MWAIT 0x64", @@ -291,7 +291,7 @@ static struct cpuidle_state cht_cstates[] = {  		.exit_latency = 10000,  		.target_residency = 20000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -304,7 +304,7 @@ static struct cpuidle_state ivb_cstates[] = {  		.exit_latency = 1,  		.target_residency = 1,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -312,7 +312,7 @@ static struct cpuidle_state ivb_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -320,7 +320,7 @@ static struct cpuidle_state ivb_cstates[] = {  		.exit_latency = 59,  		.target_residency = 156,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -328,7 +328,7 @@ static struct cpuidle_state ivb_cstates[] = {  		.exit_latency = 80,  		.target_residency = 300,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7",  		.desc = "MWAIT 0x30", @@ -336,7 +336,7 @@ static struct cpuidle_state ivb_cstates[] = {  		.exit_latency = 87,  		.target_residency = 300,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -349,7 +349,7 @@ static struct cpuidle_state ivt_cstates[] = {  		.exit_latency = 1,  		.target_residency = 1,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -357,7 +357,7 @@ static struct cpuidle_state ivt_cstates[] = {  		.exit_latency = 10,  		.target_residency = 80,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -365,7 +365,7 @@ static struct cpuidle_state ivt_cstates[] = {  		.exit_latency = 59,  		.target_residency = 156,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -373,7 +373,7 @@ static struct cpuidle_state ivt_cstates[] = {  		.exit_latency = 82,  		.target_residency = 300,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -386,7 +386,7 @@ static struct cpuidle_state ivt_cstates_4s[] = {  		.exit_latency = 1,  		.target_residency = 1,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -394,7 +394,7 @@ static struct cpuidle_state ivt_cstates_4s[] = {  		.exit_latency = 10,  		.target_residency = 250,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -402,7 +402,7 @@ static struct cpuidle_state ivt_cstates_4s[] = {  		.exit_latency = 59,  		.target_residency = 300,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -410,7 +410,7 @@ static struct cpuidle_state ivt_cstates_4s[] = {  		.exit_latency = 84,  		.target_residency = 400,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -423,7 +423,7 @@ static struct cpuidle_state ivt_cstates_8s[] = {  		.exit_latency = 1,  		.target_residency = 1,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -431,7 +431,7 @@ static struct cpuidle_state ivt_cstates_8s[] = {  		.exit_latency = 10,  		.target_residency = 500,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -439,7 +439,7 @@ static struct cpuidle_state ivt_cstates_8s[] = {  		.exit_latency = 59,  		.target_residency = 600,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -447,7 +447,7 @@ static struct cpuidle_state ivt_cstates_8s[] = {  		.exit_latency = 88,  		.target_residency = 700,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -460,7 +460,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -468,7 +468,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -476,7 +476,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 33,  		.target_residency = 100,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -484,7 +484,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 133,  		.target_residency = 400,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7s",  		.desc = "MWAIT 0x32", @@ -492,7 +492,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 166,  		.target_residency = 500,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C8",  		.desc = "MWAIT 0x40", @@ -500,7 +500,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 300,  		.target_residency = 900,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C9",  		.desc = "MWAIT 0x50", @@ -508,7 +508,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 600,  		.target_residency = 1800,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C10",  		.desc = "MWAIT 0x60", @@ -516,7 +516,7 @@ static struct cpuidle_state hsw_cstates[] = {  		.exit_latency = 2600,  		.target_residency = 7700,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -528,7 +528,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -536,7 +536,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -544,7 +544,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 40,  		.target_residency = 100,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -552,7 +552,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 133,  		.target_residency = 400,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7s",  		.desc = "MWAIT 0x32", @@ -560,7 +560,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 166,  		.target_residency = 500,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C8",  		.desc = "MWAIT 0x40", @@ -568,7 +568,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 300,  		.target_residency = 900,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C9",  		.desc = "MWAIT 0x50", @@ -576,7 +576,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 600,  		.target_residency = 1800,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C10",  		.desc = "MWAIT 0x60", @@ -584,7 +584,7 @@ static struct cpuidle_state bdw_cstates[] = {  		.exit_latency = 2600,  		.target_residency = 7700,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -597,7 +597,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -605,7 +605,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C3",  		.desc = "MWAIT 0x10", @@ -613,7 +613,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 70,  		.target_residency = 100,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -621,7 +621,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 85,  		.target_residency = 200,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7s",  		.desc = "MWAIT 0x33", @@ -629,7 +629,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 124,  		.target_residency = 800,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C8",  		.desc = "MWAIT 0x40", @@ -637,7 +637,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 200,  		.target_residency = 800,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C9",  		.desc = "MWAIT 0x50", @@ -645,7 +645,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 480,  		.target_residency = 5000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C10",  		.desc = "MWAIT 0x60", @@ -653,7 +653,7 @@ static struct cpuidle_state skl_cstates[] = {  		.exit_latency = 890,  		.target_residency = 5000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -666,7 +666,7 @@ static struct cpuidle_state skx_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -674,7 +674,7 @@ static struct cpuidle_state skx_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -682,7 +682,7 @@ static struct cpuidle_state skx_cstates[] = {  		.exit_latency = 133,  		.target_residency = 600,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -695,7 +695,7 @@ static struct cpuidle_state atom_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C2",  		.desc = "MWAIT 0x10", @@ -703,7 +703,7 @@ static struct cpuidle_state atom_cstates[] = {  		.exit_latency = 20,  		.target_residency = 80,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C4",  		.desc = "MWAIT 0x30", @@ -711,7 +711,7 @@ static struct cpuidle_state atom_cstates[] = {  		.exit_latency = 100,  		.target_residency = 400,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x52", @@ -719,7 +719,7 @@ static struct cpuidle_state atom_cstates[] = {  		.exit_latency = 140,  		.target_residency = 560,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -731,7 +731,7 @@ static struct cpuidle_state tangier_cstates[] = {  		.exit_latency = 1,  		.target_residency = 4,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C4",  		.desc = "MWAIT 0x30", @@ -739,7 +739,7 @@ static struct cpuidle_state tangier_cstates[] = {  		.exit_latency = 100,  		.target_residency = 400,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x52", @@ -747,7 +747,7 @@ static struct cpuidle_state tangier_cstates[] = {  		.exit_latency = 140,  		.target_residency = 560,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7",  		.desc = "MWAIT 0x60", @@ -755,7 +755,7 @@ static struct cpuidle_state tangier_cstates[] = {  		.exit_latency = 1200,  		.target_residency = 4000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C9",  		.desc = "MWAIT 0x64", @@ -763,7 +763,7 @@ static struct cpuidle_state tangier_cstates[] = {  		.exit_latency = 10000,  		.target_residency = 20000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -775,7 +775,7 @@ static struct cpuidle_state avn_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x51", @@ -783,7 +783,7 @@ static struct cpuidle_state avn_cstates[] = {  		.exit_latency = 15,  		.target_residency = 45,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -795,7 +795,7 @@ static struct cpuidle_state knl_cstates[] = {  		.exit_latency = 1,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze }, +		.enter_s2idle = intel_idle_s2idle },  	{  		.name = "C6",  		.desc = "MWAIT 0x10", @@ -803,7 +803,7 @@ static struct cpuidle_state knl_cstates[] = {  		.exit_latency = 120,  		.target_residency = 500,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze }, +		.enter_s2idle = intel_idle_s2idle },  	{  		.enter = NULL }  }; @@ -816,7 +816,7 @@ static struct cpuidle_state bxt_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -824,7 +824,7 @@ static struct cpuidle_state bxt_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -832,7 +832,7 @@ static struct cpuidle_state bxt_cstates[] = {  		.exit_latency = 133,  		.target_residency = 133,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C7s",  		.desc = "MWAIT 0x31", @@ -840,7 +840,7 @@ static struct cpuidle_state bxt_cstates[] = {  		.exit_latency = 155,  		.target_residency = 155,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C8",  		.desc = "MWAIT 0x40", @@ -848,7 +848,7 @@ static struct cpuidle_state bxt_cstates[] = {  		.exit_latency = 1000,  		.target_residency = 1000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C9",  		.desc = "MWAIT 0x50", @@ -856,7 +856,7 @@ static struct cpuidle_state bxt_cstates[] = {  		.exit_latency = 2000,  		.target_residency = 2000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C10",  		.desc = "MWAIT 0x60", @@ -864,7 +864,7 @@ static struct cpuidle_state bxt_cstates[] = {  		.exit_latency = 10000,  		.target_residency = 10000,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -877,7 +877,7 @@ static struct cpuidle_state dnv_cstates[] = {  		.exit_latency = 2,  		.target_residency = 2,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C1E",  		.desc = "MWAIT 0x01", @@ -885,7 +885,7 @@ static struct cpuidle_state dnv_cstates[] = {  		.exit_latency = 10,  		.target_residency = 20,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.name = "C6",  		.desc = "MWAIT 0x20", @@ -893,7 +893,7 @@ static struct cpuidle_state dnv_cstates[] = {  		.exit_latency = 50,  		.target_residency = 500,  		.enter = &intel_idle, -		.enter_freeze = intel_idle_freeze, }, +		.enter_s2idle = intel_idle_s2idle, },  	{  		.enter = NULL }  }; @@ -913,16 +913,15 @@ static __cpuidle int intel_idle(struct cpuidle_device *dev,  	struct cpuidle_state *state = &drv->states[index];  	unsigned long eax = flg2MWAIT(state->flags);  	unsigned int cstate; -	int cpu = smp_processor_id();  	cstate = (((eax) >> MWAIT_SUBSTATE_SIZE) & MWAIT_CSTATE_MASK) + 1;  	/* -	 * leave_mm() to avoid costly and often unnecessary wakeups -	 * for flushing the user TLB's associated with the active mm. +	 * NB: if CPUIDLE_FLAG_TLB_FLUSHED is set, this idle transition +	 * will probably flush the TLB.  It's not guaranteed to flush +	 * the TLB, though, so it's not clear that we can do anything +	 * useful with this knowledge.  	 */ -	if (state->flags & CPUIDLE_FLAG_TLB_FLUSHED) -		leave_mm(cpu);  	if (!(lapic_timer_reliable_states & (1 << (cstate))))  		tick_broadcast_enter(); @@ -936,12 +935,12 @@ static __cpuidle int intel_idle(struct cpuidle_device *dev,  }  /** - * intel_idle_freeze - simplified "enter" callback routine for suspend-to-idle + * intel_idle_s2idle - simplified "enter" callback routine for suspend-to-idle   * @dev: cpuidle_device   * @drv: cpuidle driver   * @index: state index   */ -static void intel_idle_freeze(struct cpuidle_device *dev, +static void intel_idle_s2idle(struct cpuidle_device *dev,  			     struct cpuidle_driver *drv, int index)  {  	unsigned long ecx = 1; /* break on interrupt flag */ @@ -1331,13 +1330,14 @@ static void __init intel_idle_cpuidle_driver_init(void)  	intel_idle_state_table_update(); +	cpuidle_poll_state_init(drv);  	drv->state_count = 1;  	for (cstate = 0; cstate < CPUIDLE_STATE_MAX; ++cstate) {  		int num_substates, mwait_hint, mwait_cstate;  		if ((cpuidle_state_table[cstate].enter == NULL) && -		    (cpuidle_state_table[cstate].enter_freeze == NULL)) +		    (cpuidle_state_table[cstate].enter_s2idle == NULL))  			break;  		if (cstate + 1 > max_cstate) { |