diff mbox

[v2] intel_idle: add idle values for Cherrytrail/Braswell

Message ID 1408707540-12393-1-git-send-email-mika.westerberg@linux.intel.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Mika Westerberg Aug. 22, 2014, 11:39 a.m. UTC
From: Mahesh Kumar P <mahesh.kumar.p@intel.com>

Cherrytrail/Braswell is a successor of Intel Baytrail but has slighly
different CPU idle values and latencies.

Signed-off-by: Kumar P Mahesh <mahesh.kumar.p@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
I learned from Mahesh that C1e, C4 and S0i2 states are deprecated so those
are now removed.

 drivers/idle/intel_idle.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

Comments

Aubrey Li Aug. 22, 2014, 2:06 p.m. UTC | #1
On 2014/8/22 19:39, Mika Westerberg wrote:
> From: Mahesh Kumar P <mahesh.kumar.p@intel.com>
> 
> Cherrytrail/Braswell is a successor of Intel Baytrail but has slighly
> different CPU idle values and latencies.
> 
> Signed-off-by: Kumar P Mahesh <mahesh.kumar.p@intel.com>
> Signed-off-by: Alan Cox <alan@linux.intel.com>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
> I learned from Mahesh that C1e, C4 and S0i2 states are deprecated so those
> are now removed.

If the platform has ACPI supported, I believe Len wants to see what
C-states number exported by ACPI.

Please boot the machine with "intel_idle.max_cstate=0" to disable
intel_idle, then post the output of the following commands

dmesg | grep idle
grep . /sys/devices/system/cpu/cpu0/cpuidle/*/*

Thanks,
-Aubrey

> 
>  drivers/idle/intel_idle.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
> 
> diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
> index 9b7ee7e427df..e472580c1826 100644
> --- a/drivers/idle/intel_idle.c
> +++ b/drivers/idle/intel_idle.c
> @@ -197,6 +197,42 @@ static struct cpuidle_state snb_cstates[] = {
>  		.enter = NULL }
>  };
>  
> +static struct cpuidle_state cht_cstates[] = {
> +	{ /* MWAIT C1 */
> +		.name = "C1-CHT",
> +		.desc = "MWAIT 0x00",
> +		.flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID,
> +		.exit_latency = 1,
> +		.target_residency = 4,
> +		.enter = &intel_idle },
> +	{ /* MWAIT C6 */
> +		.name = "C6-CHT",
> +		.desc = "MWAIT 0x52",
> +		.flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TIME_VALID
> +						| CPUIDLE_FLAG_TLB_FLUSHED,
> +		.exit_latency = 140,
> +		.target_residency = 560,
> +		.enter = &intel_idle },
> +	{ /* MWAIT C7-S0i1 */
> +		.name = "S0i1-CHT",
> +		.desc = "MWAIT 0x60",
> +		.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TIME_VALID
> +						| CPUIDLE_FLAG_TLB_FLUSHED,
> +		.exit_latency = 1200,
> +		.target_residency = 4000,
> +		.enter = &intel_idle },
> +	{ /* MWAIT C9-S0i3 */
> +		.name = "S0i3-CHT",
> +		.desc = "MWAIT 0x64",
> +		.flags = MWAIT2flg(0x64) | CPUIDLE_FLAG_TIME_VALID
> +						| CPUIDLE_FLAG_TLB_FLUSHED,
> +		.exit_latency = 10000,
> +		.target_residency = 20000,
> +		.enter = &intel_idle },
> +	{
> +		.enter = NULL }
> +};
> +
>  static struct cpuidle_state byt_cstates[] = {
>  	{
>  		.name = "C1-BYT",
> @@ -677,6 +713,11 @@ static const struct idle_cpu idle_cpu_byt = {
>  	.byt_auto_demotion_disable_flag = true,
>  };
>  
> +static const struct idle_cpu idle_cpu_cht = {
> +	.state_table = cht_cstates,
> +	.disable_promotion_to_c1e = true,
> +};
> +
>  static const struct idle_cpu idle_cpu_ivb = {
>  	.state_table = ivb_cstates,
>  	.disable_promotion_to_c1e = true,
> @@ -725,6 +766,7 @@ static const struct x86_cpu_id intel_idle_ids[] = {
>  	ICPU(0x3f, idle_cpu_hsw),
>  	ICPU(0x45, idle_cpu_hsw),
>  	ICPU(0x46, idle_cpu_hsw),
> +	ICPU(0x4c, idle_cpu_cht),
>  	ICPU(0x4d, idle_cpu_avn),
>  	ICPU(0x3d, idle_cpu_bdw),
>  	ICPU(0x4f, idle_cpu_bdw),
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mika Westerberg Aug. 25, 2014, 10:12 a.m. UTC | #2
On Fri, Aug 22, 2014 at 10:06:21PM +0800, Li, Aubrey wrote:
> On 2014/8/22 19:39, Mika Westerberg wrote:
> > From: Mahesh Kumar P <mahesh.kumar.p@intel.com>
> > 
> > Cherrytrail/Braswell is a successor of Intel Baytrail but has slighly
> > different CPU idle values and latencies.
> > 
> > Signed-off-by: Kumar P Mahesh <mahesh.kumar.p@intel.com>
> > Signed-off-by: Alan Cox <alan@linux.intel.com>
> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> > ---
> > I learned from Mahesh that C1e, C4 and S0i2 states are deprecated so those
> > are now removed.
> 
> If the platform has ACPI supported, I believe Len wants to see what
> C-states number exported by ACPI.
> 
> Please boot the machine with "intel_idle.max_cstate=0" to disable
> intel_idle, then post the output of the following commands

OK, here goes:

> dmesg | grep idle

[    0.523624] cpuidle: using governor ladder
[    0.528215] cpuidle: using governor menu
[   16.649461] intel_idle: disabled
[   16.736481] ACPI: acpi_idle registered with cpuidle

> grep . /sys/devices/system/cpu/cpu0/cpuidle/*/*

/sys/devices/system/cpu/cpu0/cpuidle/state0/desc:CPUIDLE CORE POLL IDLE
/sys/devices/system/cpu/cpu0/cpuidle/state0/disable:0
/sys/devices/system/cpu/cpu0/cpuidle/state0/latency:0
/sys/devices/system/cpu/cpu0/cpuidle/state0/name:POLL
/sys/devices/system/cpu/cpu0/cpuidle/state0/power:4294967295
/sys/devices/system/cpu/cpu0/cpuidle/state0/residency:0
/sys/devices/system/cpu/cpu0/cpuidle/state0/time:0
/sys/devices/system/cpu/cpu0/cpuidle/state0/usage:0
/sys/devices/system/cpu/cpu0/cpuidle/state1/desc:ACPI FFH INTEL MWAIT 0x0
/sys/devices/system/cpu/cpu0/cpuidle/state1/disable:0
/sys/devices/system/cpu/cpu0/cpuidle/state1/latency:1
/sys/devices/system/cpu/cpu0/cpuidle/state1/name:C1
/sys/devices/system/cpu/cpu0/cpuidle/state1/power:0
/sys/devices/system/cpu/cpu0/cpuidle/state1/residency:2
/sys/devices/system/cpu/cpu0/cpuidle/state1/time:1255076
/sys/devices/system/cpu/cpu0/cpuidle/state1/usage:763
/sys/devices/system/cpu/cpu0/cpuidle/state2/desc:ACPI FFH INTEL MWAIT 0x58
/sys/devices/system/cpu/cpu0/cpuidle/state2/disable:0
/sys/devices/system/cpu/cpu0/cpuidle/state2/latency:500
/sys/devices/system/cpu/cpu0/cpuidle/state2/name:C2
/sys/devices/system/cpu/cpu0/cpuidle/state2/power:0
/sys/devices/system/cpu/cpu0/cpuidle/state2/residency:1000
/sys/devices/system/cpu/cpu0/cpuidle/state2/time:1694866
/sys/devices/system/cpu/cpu0/cpuidle/state2/usage:639
/sys/devices/system/cpu/cpu0/cpuidle/state3/desc:ACPI FFH INTEL MWAIT 0x64
/sys/devices/system/cpu/cpu0/cpuidle/state3/disable:0
/sys/devices/system/cpu/cpu0/cpuidle/state3/latency:5000
/sys/devices/system/cpu/cpu0/cpuidle/state3/name:C3
/sys/devices/system/cpu/cpu0/cpuidle/state3/power:0
/sys/devices/system/cpu/cpu0/cpuidle/state3/residency:10000
/sys/devices/system/cpu/cpu0/cpuidle/state3/time:380547473
/sys/devices/system/cpu/cpu0/cpuidle/state3/usage:744
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Aubrey Li Aug. 26, 2014, 2:38 a.m. UTC | #3
On 2014/8/25 18:12, Mika Westerberg wrote:
> On Fri, Aug 22, 2014 at 10:06:21PM +0800, Li, Aubrey wrote:
>> On 2014/8/22 19:39, Mika Westerberg wrote:
>>> From: Mahesh Kumar P <mahesh.kumar.p@intel.com>
>>>
>>> Cherrytrail/Braswell is a successor of Intel Baytrail but has slighly
>>> different CPU idle values and latencies.
>>>
>>> Signed-off-by: Kumar P Mahesh <mahesh.kumar.p@intel.com>
>>> Signed-off-by: Alan Cox <alan@linux.intel.com>
>>> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>>> ---
>>> I learned from Mahesh that C1e, C4 and S0i2 states are deprecated so those
>>> are now removed.
>>
>> If the platform has ACPI supported, I believe Len wants to see what
>> C-states number exported by ACPI.
>>
>> Please boot the machine with "intel_idle.max_cstate=0" to disable
>> intel_idle, then post the output of the following commands
> 
> OK, here goes:

ACPI exposes 0x58 as C6 mwait hint while the patch proposes 0x52 for C6.
Can you please remove "intel_idle.max_cstate=0" and run "dmesg | grep
idle" again to see how many C6 supports in CPUID enumeration?

Thanks,
-Aubrey

> 
>> dmesg | grep idle
> 
> [    0.523624] cpuidle: using governor ladder
> [    0.528215] cpuidle: using governor menu
> [   16.649461] intel_idle: disabled
> [   16.736481] ACPI: acpi_idle registered with cpuidle
> 
>> grep . /sys/devices/system/cpu/cpu0/cpuidle/*/*
> 
> /sys/devices/system/cpu/cpu0/cpuidle/state0/desc:CPUIDLE CORE POLL IDLE
> /sys/devices/system/cpu/cpu0/cpuidle/state0/disable:0
> /sys/devices/system/cpu/cpu0/cpuidle/state0/latency:0
> /sys/devices/system/cpu/cpu0/cpuidle/state0/name:POLL
> /sys/devices/system/cpu/cpu0/cpuidle/state0/power:4294967295
> /sys/devices/system/cpu/cpu0/cpuidle/state0/residency:0
> /sys/devices/system/cpu/cpu0/cpuidle/state0/time:0
> /sys/devices/system/cpu/cpu0/cpuidle/state0/usage:0
> /sys/devices/system/cpu/cpu0/cpuidle/state1/desc:ACPI FFH INTEL MWAIT 0x0
> /sys/devices/system/cpu/cpu0/cpuidle/state1/disable:0
> /sys/devices/system/cpu/cpu0/cpuidle/state1/latency:1
> /sys/devices/system/cpu/cpu0/cpuidle/state1/name:C1
> /sys/devices/system/cpu/cpu0/cpuidle/state1/power:0
> /sys/devices/system/cpu/cpu0/cpuidle/state1/residency:2
> /sys/devices/system/cpu/cpu0/cpuidle/state1/time:1255076
> /sys/devices/system/cpu/cpu0/cpuidle/state1/usage:763
> /sys/devices/system/cpu/cpu0/cpuidle/state2/desc:ACPI FFH INTEL MWAIT 0x58
> /sys/devices/system/cpu/cpu0/cpuidle/state2/disable:0
> /sys/devices/system/cpu/cpu0/cpuidle/state2/latency:500
> /sys/devices/system/cpu/cpu0/cpuidle/state2/name:C2
> /sys/devices/system/cpu/cpu0/cpuidle/state2/power:0
> /sys/devices/system/cpu/cpu0/cpuidle/state2/residency:1000
> /sys/devices/system/cpu/cpu0/cpuidle/state2/time:1694866
> /sys/devices/system/cpu/cpu0/cpuidle/state2/usage:639
> /sys/devices/system/cpu/cpu0/cpuidle/state3/desc:ACPI FFH INTEL MWAIT 0x64
> /sys/devices/system/cpu/cpu0/cpuidle/state3/disable:0
> /sys/devices/system/cpu/cpu0/cpuidle/state3/latency:5000
> /sys/devices/system/cpu/cpu0/cpuidle/state3/name:C3
> /sys/devices/system/cpu/cpu0/cpuidle/state3/power:0
> /sys/devices/system/cpu/cpu0/cpuidle/state3/residency:10000
> /sys/devices/system/cpu/cpu0/cpuidle/state3/time:380547473
> /sys/devices/system/cpu/cpu0/cpuidle/state3/usage:744
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mika Westerberg Aug. 26, 2014, 9 a.m. UTC | #4
On Tue, Aug 26, 2014 at 10:38:32AM +0800, Li, Aubrey wrote:
> On 2014/8/25 18:12, Mika Westerberg wrote:
> > On Fri, Aug 22, 2014 at 10:06:21PM +0800, Li, Aubrey wrote:
> >> On 2014/8/22 19:39, Mika Westerberg wrote:
> >>> From: Mahesh Kumar P <mahesh.kumar.p@intel.com>
> >>>
> >>> Cherrytrail/Braswell is a successor of Intel Baytrail but has slighly
> >>> different CPU idle values and latencies.
> >>>
> >>> Signed-off-by: Kumar P Mahesh <mahesh.kumar.p@intel.com>
> >>> Signed-off-by: Alan Cox <alan@linux.intel.com>
> >>> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> >>> ---
> >>> I learned from Mahesh that C1e, C4 and S0i2 states are deprecated so those
> >>> are now removed.
> >>
> >> If the platform has ACPI supported, I believe Len wants to see what
> >> C-states number exported by ACPI.
> >>
> >> Please boot the machine with "intel_idle.max_cstate=0" to disable
> >> intel_idle, then post the output of the following commands
> > 
> > OK, here goes:
> 
> ACPI exposes 0x58 as C6 mwait hint while the patch proposes 0x52 for C6.
> Can you please remove "intel_idle.max_cstate=0" and run "dmesg | grep
> idle" again to see how many C6 supports in CPUID enumeration?

[   16.685769] intel_idle: MWAIT substates: 0x33000020
[   16.691236] intel_idle: v0.4 model 0x4C
[   16.695539] intel_idle: lapic_timer_reliable_states 0xffffffff
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Aubrey Li Aug. 27, 2014, 12:03 a.m. UTC | #5
On 2014/8/26 17:00, Mika Westerberg wrote:
> On Tue, Aug 26, 2014 at 10:38:32AM +0800, Li, Aubrey wrote:
>> On 2014/8/25 18:12, Mika Westerberg wrote:
>>> On Fri, Aug 22, 2014 at 10:06:21PM +0800, Li, Aubrey wrote:
>>>> On 2014/8/22 19:39, Mika Westerberg wrote:
>>>>> From: Mahesh Kumar P <mahesh.kumar.p@intel.com>
>>>>>
>>>>> Cherrytrail/Braswell is a successor of Intel Baytrail but has slighly
>>>>> different CPU idle values and latencies.
>>>>>
>>>>> Signed-off-by: Kumar P Mahesh <mahesh.kumar.p@intel.com>
>>>>> Signed-off-by: Alan Cox <alan@linux.intel.com>
>>>>> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>>>>> ---
>>>>> I learned from Mahesh that C1e, C4 and S0i2 states are deprecated so those
>>>>> are now removed.
>>>>
>>>> If the platform has ACPI supported, I believe Len wants to see what
>>>> C-states number exported by ACPI.
>>>>
>>>> Please boot the machine with "intel_idle.max_cstate=0" to disable
>>>> intel_idle, then post the output of the following commands
>>>
>>> OK, here goes:
>>
>> ACPI exposes 0x58 as C6 mwait hint while the patch proposes 0x52 for C6.
>> Can you please remove "intel_idle.max_cstate=0" and run "dmesg | grep
>> idle" again to see how many C6 supports in CPUID enumeration?
> 
> [   16.685769] intel_idle: MWAIT substates: 0x33000020
> [   16.691236] intel_idle: v0.4 model 0x4C
> [   16.695539] intel_idle: lapic_timer_reliable_states 0xffffffff
> 

enough to turn over to Len to finalize, thanks Mika.

-Aubrey

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index 9b7ee7e427df..e472580c1826 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -197,6 +197,42 @@  static struct cpuidle_state snb_cstates[] = {
 		.enter = NULL }
 };
 
+static struct cpuidle_state cht_cstates[] = {
+	{ /* MWAIT C1 */
+		.name = "C1-CHT",
+		.desc = "MWAIT 0x00",
+		.flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID,
+		.exit_latency = 1,
+		.target_residency = 4,
+		.enter = &intel_idle },
+	{ /* MWAIT C6 */
+		.name = "C6-CHT",
+		.desc = "MWAIT 0x52",
+		.flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TIME_VALID
+						| CPUIDLE_FLAG_TLB_FLUSHED,
+		.exit_latency = 140,
+		.target_residency = 560,
+		.enter = &intel_idle },
+	{ /* MWAIT C7-S0i1 */
+		.name = "S0i1-CHT",
+		.desc = "MWAIT 0x60",
+		.flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TIME_VALID
+						| CPUIDLE_FLAG_TLB_FLUSHED,
+		.exit_latency = 1200,
+		.target_residency = 4000,
+		.enter = &intel_idle },
+	{ /* MWAIT C9-S0i3 */
+		.name = "S0i3-CHT",
+		.desc = "MWAIT 0x64",
+		.flags = MWAIT2flg(0x64) | CPUIDLE_FLAG_TIME_VALID
+						| CPUIDLE_FLAG_TLB_FLUSHED,
+		.exit_latency = 10000,
+		.target_residency = 20000,
+		.enter = &intel_idle },
+	{
+		.enter = NULL }
+};
+
 static struct cpuidle_state byt_cstates[] = {
 	{
 		.name = "C1-BYT",
@@ -677,6 +713,11 @@  static const struct idle_cpu idle_cpu_byt = {
 	.byt_auto_demotion_disable_flag = true,
 };
 
+static const struct idle_cpu idle_cpu_cht = {
+	.state_table = cht_cstates,
+	.disable_promotion_to_c1e = true,
+};
+
 static const struct idle_cpu idle_cpu_ivb = {
 	.state_table = ivb_cstates,
 	.disable_promotion_to_c1e = true,
@@ -725,6 +766,7 @@  static const struct x86_cpu_id intel_idle_ids[] = {
 	ICPU(0x3f, idle_cpu_hsw),
 	ICPU(0x45, idle_cpu_hsw),
 	ICPU(0x46, idle_cpu_hsw),
+	ICPU(0x4c, idle_cpu_cht),
 	ICPU(0x4d, idle_cpu_avn),
 	ICPU(0x3d, idle_cpu_bdw),
 	ICPU(0x4f, idle_cpu_bdw),