All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
@ 2011-03-30 22:21 Len Brown
  2011-04-14  9:08 ` Ingo Molnar
  2011-04-14  9:08 ` Ingo Molnar
  0 siblings, 2 replies; 27+ messages in thread
From: Len Brown @ 2011-03-30 22:21 UTC (permalink / raw)
  To: x86; +Cc: linux-pm, linux-kernel

From: Len Brown <len.brown@intel.com>

Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility is available
in-tree to update MSR_IA32_ENERGY_PERF_BIAS.

However, the typical BIOS fails to initialize the MSR,
and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).

The result is that some modern hardware is running in hardware default,
which is "performance" mode, rather than the intended design default
of "normal" mode.

Initialize the MSR to the "normal" setting during kernel boot.

Of course, x86_energy_perf_policy(8) is available to change
the default after boot, should the user have a policy preference.

cc: stable@kernel.org
Signed-off-by: Len Brown <len.brown@intel.com>
---
 arch/x86/include/asm/msr-index.h |    3 +++
 arch/x86/kernel/cpu/intel.c      |   14 ++++++++++++++
 2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 43a18c7..91fedd9 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -250,6 +250,9 @@
 #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE	0
+#define ENERGY_PERF_BIAS_NORMAL		6
+#define ENERGY_PERF_BIAS_POWERSWAVE	15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
 
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index d16c2c5..48cca4a 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -448,6 +448,20 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 
 	if (cpu_has(c, X86_FEATURE_VMX))
 		detect_vmx_virtcap(c);
+
+	/*
+	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
+	 * x86_energy_perf_policy(8) is available to change it at run-time
+	 */
+	if (cpu_has(c, X86_FEATURE_EPB)) {
+		u64 epb;
+
+		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		if ((epb & 0xF) == 0) {
+			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
+			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		}
+	}
 }
 
 #ifdef CONFIG_X86_32
-- 
1.7.4.2.406.gbe91


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-03-30 22:21 [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
@ 2011-04-14  9:08 ` Ingo Molnar
  2011-04-15  6:25   ` Len Brown
  2011-04-15  6:25   ` Len Brown
  2011-04-14  9:08 ` Ingo Molnar
  1 sibling, 2 replies; 27+ messages in thread
From: Ingo Molnar @ 2011-04-14  9:08 UTC (permalink / raw)
  To: Len Brown
  Cc: x86, linux-pm, linux-kernel, H. Peter Anvin, Thomas Gleixner,
	Alan Cox, Linus Torvalds, Andrew Morton, Arjan van de Ven


* Len Brown <lenb@kernel.org> wrote:

> From: Len Brown <len.brown@intel.com>
> 
> Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility is available
> in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> 
> However, the typical BIOS fails to initialize the MSR,
> and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> 
> The result is that some modern hardware is running in hardware default,
> which is "performance" mode, rather than the intended design default
> of "normal" mode.
> 
> Initialize the MSR to the "normal" setting during kernel boot.
> 
> Of course, x86_energy_perf_policy(8) is available to change
> the default after boot, should the user have a policy preference.
> 
> cc: stable@kernel.org
> Signed-off-by: Len Brown <len.brown@intel.com>
> ---
>  arch/x86/include/asm/msr-index.h |    3 +++
>  arch/x86/kernel/cpu/intel.c      |   14 ++++++++++++++
>  2 files changed, 17 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
> index 43a18c7..91fedd9 100644
> --- a/arch/x86/include/asm/msr-index.h
> +++ b/arch/x86/include/asm/msr-index.h
> @@ -250,6 +250,9 @@
>  #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
>  
>  #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
> +#define ENERGY_PERF_BIAS_PERFORMANCE	0
> +#define ENERGY_PERF_BIAS_NORMAL		6
> +#define ENERGY_PERF_BIAS_POWERSWAVE	15
>  
>  #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
>  
> diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
> index d16c2c5..48cca4a 100644
> --- a/arch/x86/kernel/cpu/intel.c
> +++ b/arch/x86/kernel/cpu/intel.c
> @@ -448,6 +448,20 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
>  
>  	if (cpu_has(c, X86_FEATURE_VMX))
>  		detect_vmx_virtcap(c);
> +
> +	/*
> +	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
> +	 * x86_energy_perf_policy(8) is available to change it at run-time
> +	 */
> +	if (cpu_has(c, X86_FEATURE_EPB)) {
> +		u64 epb;
> +
> +		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		if ((epb & 0xF) == 0) {
> +			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
> +			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		}
> +	}

Dunno, this patch appears to silently modify the system to be slower than it 
was before under Linux.

Won't people report this as a regression if this change reduces performance for 
them?

They wont be able to see your comments in the code and in the changelog either, 
when this happens to them. They might look into /proc/cpuinfo and see 'epb' 
there but it wont tell them anything. They wont know about a utility available 
in tools/power/x86/ either.

So this patch has 'future trouble' written all over it i'm afraid.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-03-30 22:21 [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
  2011-04-14  9:08 ` Ingo Molnar
@ 2011-04-14  9:08 ` Ingo Molnar
  1 sibling, 0 replies; 27+ messages in thread
From: Ingo Molnar @ 2011-04-14  9:08 UTC (permalink / raw)
  To: Len Brown
  Cc: Andrew Morton, x86, linux-kernel, H. Peter Anvin, linux-pm,
	Linus Torvalds, Thomas Gleixner, Alan Cox, Arjan van de Ven


* Len Brown <lenb@kernel.org> wrote:

> From: Len Brown <len.brown@intel.com>
> 
> Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility is available
> in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> 
> However, the typical BIOS fails to initialize the MSR,
> and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> 
> The result is that some modern hardware is running in hardware default,
> which is "performance" mode, rather than the intended design default
> of "normal" mode.
> 
> Initialize the MSR to the "normal" setting during kernel boot.
> 
> Of course, x86_energy_perf_policy(8) is available to change
> the default after boot, should the user have a policy preference.
> 
> cc: stable@kernel.org
> Signed-off-by: Len Brown <len.brown@intel.com>
> ---
>  arch/x86/include/asm/msr-index.h |    3 +++
>  arch/x86/kernel/cpu/intel.c      |   14 ++++++++++++++
>  2 files changed, 17 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
> index 43a18c7..91fedd9 100644
> --- a/arch/x86/include/asm/msr-index.h
> +++ b/arch/x86/include/asm/msr-index.h
> @@ -250,6 +250,9 @@
>  #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
>  
>  #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
> +#define ENERGY_PERF_BIAS_PERFORMANCE	0
> +#define ENERGY_PERF_BIAS_NORMAL		6
> +#define ENERGY_PERF_BIAS_POWERSWAVE	15
>  
>  #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
>  
> diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
> index d16c2c5..48cca4a 100644
> --- a/arch/x86/kernel/cpu/intel.c
> +++ b/arch/x86/kernel/cpu/intel.c
> @@ -448,6 +448,20 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
>  
>  	if (cpu_has(c, X86_FEATURE_VMX))
>  		detect_vmx_virtcap(c);
> +
> +	/*
> +	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
> +	 * x86_energy_perf_policy(8) is available to change it at run-time
> +	 */
> +	if (cpu_has(c, X86_FEATURE_EPB)) {
> +		u64 epb;
> +
> +		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		if ((epb & 0xF) == 0) {
> +			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
> +			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		}
> +	}

Dunno, this patch appears to silently modify the system to be slower than it 
was before under Linux.

Won't people report this as a regression if this change reduces performance for 
them?

They wont be able to see your comments in the code and in the changelog either, 
when this happens to them. They might look into /proc/cpuinfo and see 'epb' 
there but it wont tell them anything. They wont know about a utility available 
in tools/power/x86/ either.

So this patch has 'future trouble' written all over it i'm afraid.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-14  9:08 ` Ingo Molnar
@ 2011-04-15  6:25   ` Len Brown
  2011-04-15 10:17     ` Ingo Molnar
                       ` (3 more replies)
  2011-04-15  6:25   ` Len Brown
  1 sibling, 4 replies; 27+ messages in thread
From: Len Brown @ 2011-04-15  6:25 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: x86, linux-pm, linux-kernel, H. Peter Anvin, Thomas Gleixner,
	Alan Cox, Linus Torvalds, Andrew Morton, Arjan van de Ven


> > From: Len Brown <len.brown@intel.com>
> > 
> > Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> > Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility is available
> > in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> > 
> > However, the typical BIOS fails to initialize the MSR,
> > and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> > 
> > The result is that some modern hardware is running in hardware default,
> > which is "performance" mode, rather than the intended design default
> > of "normal" mode.
> > 
> > Initialize the MSR to the "normal" setting during kernel boot.
> > 
> > Of course, x86_energy_perf_policy(8) is available to change
> > the default after boot, should the user have a policy preference.
> > 
> > cc: stable@kernel.org
> > Signed-off-by: Len Brown <len.brown@intel.com>
> > ---
> >  arch/x86/include/asm/msr-index.h |    3 +++
> >  arch/x86/kernel/cpu/intel.c      |   14 ++++++++++++++
> >  2 files changed, 17 insertions(+), 0 deletions(-)
> > 
...
> 
> Dunno, this patch appears to silently modify the system to be slower than it 
> was before under Linux.
> 
> Won't people report this as a regression if this change reduces performance for 
> them?
> 
> They wont be able to see your comments in the code and in the changelog either, 
> when this happens to them. They might look into /proc/cpuinfo and see 'epb' 
> there but it wont tell them anything. They wont know about a utility available 
> in tools/power/x86/ either.

This patch makes no change to the epb feature indicator
/proc/cpuinfo.

> So this patch has 'future trouble' written all over it i'm afraid.

EPB is limited to SNB and later.
So the installed base as yet is small.
(it also exists on WSM-EP, but doesn't do so much there)
EPB will have a more significant effect on future hardware.

Linux currently trails competing operating systems in energy
efficiency on SNB due to this setting, and Linux will trail
competing operating systems even more on future hardware
if this default is not fixed.

Will it be possible to measure a performance difference between
"performance" and "normal"?  Yes, it will be possible.
Will 99.9% of users notice?  Nope.  More likely they'll notice
the the power savings that are disabled in "performance" mode.

I should have called it "benchmark" mode instead of "performance" mode...

thanks,
Len Brown, Intel Open Source Technology Center


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-14  9:08 ` Ingo Molnar
  2011-04-15  6:25   ` Len Brown
@ 2011-04-15  6:25   ` Len Brown
  1 sibling, 0 replies; 27+ messages in thread
From: Len Brown @ 2011-04-15  6:25 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, x86, linux-kernel, H. Peter Anvin, linux-pm,
	Linus Torvalds, Thomas Gleixner, Alan Cox, Arjan van de Ven


> > From: Len Brown <len.brown@intel.com>
> > 
> > Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> > Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility is available
> > in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> > 
> > However, the typical BIOS fails to initialize the MSR,
> > and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> > 
> > The result is that some modern hardware is running in hardware default,
> > which is "performance" mode, rather than the intended design default
> > of "normal" mode.
> > 
> > Initialize the MSR to the "normal" setting during kernel boot.
> > 
> > Of course, x86_energy_perf_policy(8) is available to change
> > the default after boot, should the user have a policy preference.
> > 
> > cc: stable@kernel.org
> > Signed-off-by: Len Brown <len.brown@intel.com>
> > ---
> >  arch/x86/include/asm/msr-index.h |    3 +++
> >  arch/x86/kernel/cpu/intel.c      |   14 ++++++++++++++
> >  2 files changed, 17 insertions(+), 0 deletions(-)
> > 
...
> 
> Dunno, this patch appears to silently modify the system to be slower than it 
> was before under Linux.
> 
> Won't people report this as a regression if this change reduces performance for 
> them?
> 
> They wont be able to see your comments in the code and in the changelog either, 
> when this happens to them. They might look into /proc/cpuinfo and see 'epb' 
> there but it wont tell them anything. They wont know about a utility available 
> in tools/power/x86/ either.

This patch makes no change to the epb feature indicator
/proc/cpuinfo.

> So this patch has 'future trouble' written all over it i'm afraid.

EPB is limited to SNB and later.
So the installed base as yet is small.
(it also exists on WSM-EP, but doesn't do so much there)
EPB will have a more significant effect on future hardware.

Linux currently trails competing operating systems in energy
efficiency on SNB due to this setting, and Linux will trail
competing operating systems even more on future hardware
if this default is not fixed.

Will it be possible to measure a performance difference between
"performance" and "normal"?  Yes, it will be possible.
Will 99.9% of users notice?  Nope.  More likely they'll notice
the the power savings that are disabled in "performance" mode.

I should have called it "benchmark" mode instead of "performance" mode...

thanks,
Len Brown, Intel Open Source Technology Center

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-15  6:25   ` Len Brown
@ 2011-04-15 10:17     ` Ingo Molnar
  2011-07-13 20:44         ` Len Brown
  2011-04-15 10:17     ` [PATCH] " Ingo Molnar
                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 27+ messages in thread
From: Ingo Molnar @ 2011-04-15 10:17 UTC (permalink / raw)
  To: Len Brown
  Cc: x86, linux-pm, linux-kernel, H. Peter Anvin, Thomas Gleixner,
	Alan Cox, Linus Torvalds, Andrew Morton, Arjan van de Ven


* Len Brown <lenb@kernel.org> wrote:

> 
> > > From: Len Brown <len.brown@intel.com>
> > > 
> > > Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> > > Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility is available
> > > in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> > > 
> > > However, the typical BIOS fails to initialize the MSR,
> > > and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> > > 
> > > The result is that some modern hardware is running in hardware default,
> > > which is "performance" mode, rather than the intended design default
> > > of "normal" mode.
> > > 
> > > Initialize the MSR to the "normal" setting during kernel boot.
> > > 
> > > Of course, x86_energy_perf_policy(8) is available to change
> > > the default after boot, should the user have a policy preference.
> > > 
> > > cc: stable@kernel.org
> > > Signed-off-by: Len Brown <len.brown@intel.com>
> > > ---
> > >  arch/x86/include/asm/msr-index.h |    3 +++
> > >  arch/x86/kernel/cpu/intel.c      |   14 ++++++++++++++
> > >  2 files changed, 17 insertions(+), 0 deletions(-)
> > > 
> ...
> > 
> > Dunno, this patch appears to silently modify the system to be slower than it 
> > was before under Linux.
> > 
> > Won't people report this as a regression if this change reduces performance for 
> > them?
> > 
> > They wont be able to see your comments in the code and in the changelog either, 
> > when this happens to them. They might look into /proc/cpuinfo and see 'epb' 
> > there but it wont tell them anything. They wont know about a utility available 
> > in tools/power/x86/ either.
> 
> This patch makes no change to the epb feature indicator
> /proc/cpuinfo.

I know. I reacted to this bit in the changelog:

> > > Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,

Printing the existence of a CPU feature does nothing to inform users.

> > So this patch has 'future trouble' written all over it i'm afraid.
> 
> EPB is limited to SNB and later.
> So the installed base as yet is small.
> (it also exists on WSM-EP, but doesn't do so much there)
> EPB will have a more significant effect on future hardware.
> 
> Linux currently trails competing operating systems in energy
> efficiency on SNB due to this setting, and Linux will trail
> competing operating systems even more on future hardware
> if this default is not fixed.
> 
> Will it be possible to measure a performance difference between
> "performance" and "normal"?  Yes, it will be possible.
> Will 99.9% of users notice?  Nope.  More likely they'll notice
> the the power savings that are disabled in "performance" mode.
> 
> I should have called it "benchmark" mode instead of "performance" mode...

That's all fair but does not address the concerns i raised. A silent change 
during bootup is asking for trouble.

So how about informing users, how about making it non-silent? An informative 
printk that also mentions the power configuration tool, etc. This solves the 
concerns i mentioned.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-15  6:25   ` Len Brown
  2011-04-15 10:17     ` Ingo Molnar
@ 2011-04-15 10:17     ` Ingo Molnar
  2011-04-20 13:14     ` Pavel Machek
  2011-04-20 13:14     ` Pavel Machek
  3 siblings, 0 replies; 27+ messages in thread
From: Ingo Molnar @ 2011-04-15 10:17 UTC (permalink / raw)
  To: Len Brown
  Cc: Andrew Morton, x86, linux-kernel, H. Peter Anvin, linux-pm,
	Linus Torvalds, Thomas Gleixner, Alan Cox, Arjan van de Ven


* Len Brown <lenb@kernel.org> wrote:

> 
> > > From: Len Brown <len.brown@intel.com>
> > > 
> > > Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> > > Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility is available
> > > in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> > > 
> > > However, the typical BIOS fails to initialize the MSR,
> > > and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> > > 
> > > The result is that some modern hardware is running in hardware default,
> > > which is "performance" mode, rather than the intended design default
> > > of "normal" mode.
> > > 
> > > Initialize the MSR to the "normal" setting during kernel boot.
> > > 
> > > Of course, x86_energy_perf_policy(8) is available to change
> > > the default after boot, should the user have a policy preference.
> > > 
> > > cc: stable@kernel.org
> > > Signed-off-by: Len Brown <len.brown@intel.com>
> > > ---
> > >  arch/x86/include/asm/msr-index.h |    3 +++
> > >  arch/x86/kernel/cpu/intel.c      |   14 ++++++++++++++
> > >  2 files changed, 17 insertions(+), 0 deletions(-)
> > > 
> ...
> > 
> > Dunno, this patch appears to silently modify the system to be slower than it 
> > was before under Linux.
> > 
> > Won't people report this as a regression if this change reduces performance for 
> > them?
> > 
> > They wont be able to see your comments in the code and in the changelog either, 
> > when this happens to them. They might look into /proc/cpuinfo and see 'epb' 
> > there but it wont tell them anything. They wont know about a utility available 
> > in tools/power/x86/ either.
> 
> This patch makes no change to the epb feature indicator
> /proc/cpuinfo.

I know. I reacted to this bit in the changelog:

> > > Since 2.6.35 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,

Printing the existence of a CPU feature does nothing to inform users.

> > So this patch has 'future trouble' written all over it i'm afraid.
> 
> EPB is limited to SNB and later.
> So the installed base as yet is small.
> (it also exists on WSM-EP, but doesn't do so much there)
> EPB will have a more significant effect on future hardware.
> 
> Linux currently trails competing operating systems in energy
> efficiency on SNB due to this setting, and Linux will trail
> competing operating systems even more on future hardware
> if this default is not fixed.
> 
> Will it be possible to measure a performance difference between
> "performance" and "normal"?  Yes, it will be possible.
> Will 99.9% of users notice?  Nope.  More likely they'll notice
> the the power savings that are disabled in "performance" mode.
> 
> I should have called it "benchmark" mode instead of "performance" mode...

That's all fair but does not address the concerns i raised. A silent change 
during bootup is asking for trouble.

So how about informing users, how about making it non-silent? An informative 
printk that also mentions the power configuration tool, etc. This solves the 
concerns i mentioned.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-15  6:25   ` Len Brown
  2011-04-15 10:17     ` Ingo Molnar
  2011-04-15 10:17     ` [PATCH] " Ingo Molnar
@ 2011-04-20 13:14     ` Pavel Machek
  2011-07-13 20:51       ` Len Brown
  2011-07-13 20:51       ` Len Brown
  2011-04-20 13:14     ` Pavel Machek
  3 siblings, 2 replies; 27+ messages in thread
From: Pavel Machek @ 2011-04-20 13:14 UTC (permalink / raw)
  To: Len Brown, stable
  Cc: Ingo Molnar, x86, linux-pm, linux-kernel, H. Peter Anvin,
	Thomas Gleixner, Alan Cox, Linus Torvalds, Andrew Morton,
	Arjan van de Ven


> > > However, the typical BIOS fails to initialize the MSR,
> > > and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> > > 
> > > The result is that some modern hardware is running in hardware default,
> > > which is "performance" mode, rather than the intended design default
> > > of "normal" mode.
> > > 
> > > Initialize the MSR to the "normal" setting during kernel boot.
> > > 
> > > Of course, x86_energy_perf_policy(8) is available to change
> > > the default after boot, should the user have a policy preference.
> > > 
> > > cc: stable@kernel.org
...
> Will it be possible to measure a performance difference between
> "performance" and "normal"?  Yes, it will be possible.

Ok. So... what "serious bug" does this fix? You really need to use cc:
stable less. Tweaking performance/power ratio is _not_ serious bug.


									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-15  6:25   ` Len Brown
                       ` (2 preceding siblings ...)
  2011-04-20 13:14     ` Pavel Machek
@ 2011-04-20 13:14     ` Pavel Machek
  3 siblings, 0 replies; 27+ messages in thread
From: Pavel Machek @ 2011-04-20 13:14 UTC (permalink / raw)
  To: Len Brown, stable
  Cc: Andrew Morton, x86, linux-kernel, Thomas Gleixner,
	H. Peter Anvin, Ingo Molnar, Linus Torvalds, linux-pm, Alan Cox,
	Arjan van de Ven


> > > However, the typical BIOS fails to initialize the MSR,
> > > and the typical Linux distro neglects to invoke x86_energy_perf_policy(8).
> > > 
> > > The result is that some modern hardware is running in hardware default,
> > > which is "performance" mode, rather than the intended design default
> > > of "normal" mode.
> > > 
> > > Initialize the MSR to the "normal" setting during kernel boot.
> > > 
> > > Of course, x86_energy_perf_policy(8) is available to change
> > > the default after boot, should the user have a policy preference.
> > > 
> > > cc: stable@kernel.org
...
> Will it be possible to measure a performance difference between
> "performance" and "normal"?  Yes, it will be possible.

Ok. So... what "serious bug" does this fix? You really need to use cc:
stable less. Tweaking performance/power ratio is _not_ serious bug.


									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-15 10:17     ` Ingo Molnar
@ 2011-07-13 20:44         ` Len Brown
  0 siblings, 0 replies; 27+ messages in thread
From: Len Brown @ 2011-07-13 20:44 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: x86, linux-pm, linux-kernel, H. Peter Anvin, Thomas Gleixner,
	Alan Cox, Linus Torvalds, Andrew Morton, Arjan van de Ven


> So how about informing users, how about making it non-silent? An informative 
> printk that also mentions the power configuration tool, etc. This solves the 
> concerns i mentioned.

Something like this?

                rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
                if ((epb & 0xF) == 0) {
                        printk_once(KERN_WARN, "x86: updated energy_perf_bias"
                                " to 'normal' from 'performance'\n"
                                "You can view and update epb via utility,"
                                " such as x86_energy_perf_policy(8)\n");
                        epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
                        wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
                }


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
@ 2011-07-13 20:44         ` Len Brown
  0 siblings, 0 replies; 27+ messages in thread
From: Len Brown @ 2011-07-13 20:44 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Andrew Morton, x86, linux-kernel, H. Peter Anvin, linux-pm,
	Linus Torvalds, Thomas Gleixner, Alan Cox, Arjan van de Ven


> So how about informing users, how about making it non-silent? An informative 
> printk that also mentions the power configuration tool, etc. This solves the 
> concerns i mentioned.

Something like this?

                rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
                if ((epb & 0xF) == 0) {
                        printk_once(KERN_WARN, "x86: updated energy_perf_bias"
                                " to 'normal' from 'performance'\n"
                                "You can view and update epb via utility,"
                                " such as x86_energy_perf_policy(8)\n");
                        epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
                        wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
                }

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-13 20:44         ` Len Brown
@ 2011-07-13 20:49           ` Linus Torvalds
  -1 siblings, 0 replies; 27+ messages in thread
From: Linus Torvalds @ 2011-07-13 20:49 UTC (permalink / raw)
  To: Len Brown
  Cc: Ingo Molnar, x86, linux-pm, linux-kernel, H. Peter Anvin,
	Thomas Gleixner, Alan Cox, Andrew Morton, Arjan van de Ven

Ack. Let's just do this. Ingo?

            Linus

On Wed, Jul 13, 2011 at 1:44 PM, Len Brown <lenb@kernel.org> wrote:
>
>> So how about informing users, how about making it non-silent? An informative
>> printk that also mentions the power configuration tool, etc. This solves the
>> concerns i mentioned.
>
> Something like this?
>
>                rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
>                if ((epb & 0xF) == 0) {
>                        printk_once(KERN_WARN, "x86: updated energy_perf_bias"
>                                " to 'normal' from 'performance'\n"
>                                "You can view and update epb via utility,"
>                                " such as x86_energy_perf_policy(8)\n");
>                        epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
>                        wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
>                }
>
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
@ 2011-07-13 20:49           ` Linus Torvalds
  0 siblings, 0 replies; 27+ messages in thread
From: Linus Torvalds @ 2011-07-13 20:49 UTC (permalink / raw)
  To: Len Brown
  Cc: Andrew Morton, x86, linux-kernel, Thomas Gleixner,
	H. Peter Anvin, Ingo Molnar, linux-pm, Alan Cox,
	Arjan van de Ven

Ack. Let's just do this. Ingo?

            Linus

On Wed, Jul 13, 2011 at 1:44 PM, Len Brown <lenb@kernel.org> wrote:
>
>> So how about informing users, how about making it non-silent? An informative
>> printk that also mentions the power configuration tool, etc. This solves the
>> concerns i mentioned.
>
> Something like this?
>
>                rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
>                if ((epb & 0xF) == 0) {
>                        printk_once(KERN_WARN, "x86: updated energy_perf_bias"
>                                " to 'normal' from 'performance'\n"
>                                "You can view and update epb via utility,"
>                                " such as x86_energy_perf_policy(8)\n");
>                        epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
>                        wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
>                }
>
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-20 13:14     ` Pavel Machek
  2011-07-13 20:51       ` Len Brown
@ 2011-07-13 20:51       ` Len Brown
  1 sibling, 0 replies; 27+ messages in thread
From: Len Brown @ 2011-07-13 20:51 UTC (permalink / raw)
  To: Pavel Machek
  Cc: stable, Ingo Molnar, x86, linux-pm, linux-kernel, H. Peter Anvin,
	Thomas Gleixner, Alan Cox, Linus Torvalds, Andrew Morton,
	Arjan van de Ven

> Ok. So... what "serious bug" does this fix? You really need to use cc:
> stable less. Tweaking performance/power ratio is _not_ serious bug.

While the performance difference may not be significant,
the energy difference may be.

Some people think it is serious when Linux has worse out-of-box
energy efficiency than Windows on the same hardware.

Some people think that it is serious when their Linux distribution
has worse energy efficiency than competing Linux distributions.

Greg has given me a hard time for not cc'ing stable _enough_.
I guess the folks that answer the stable mail get to decide...

cheers,
-Len


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-04-20 13:14     ` Pavel Machek
@ 2011-07-13 20:51       ` Len Brown
  2011-07-13 20:51       ` Len Brown
  1 sibling, 0 replies; 27+ messages in thread
From: Len Brown @ 2011-07-13 20:51 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Andrew Morton, Linus Torvalds, x86, linux-kernel,
	Thomas Gleixner, H. Peter Anvin, Ingo Molnar, linux-pm, stable,
	Alan Cox, Arjan van de Ven

> Ok. So... what "serious bug" does this fix? You really need to use cc:
> stable less. Tweaking performance/power ratio is _not_ serious bug.

While the performance difference may not be significant,
the energy difference may be.

Some people think it is serious when Linux has worse out-of-box
energy efficiency than Windows on the same hardware.

Some people think that it is serious when their Linux distribution
has worse energy efficiency than competing Linux distributions.

Greg has given me a hard time for not cc'ing stable _enough_.
I guess the folks that answer the stable mail get to decide...

cheers,
-Len

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-13 20:49           ` Linus Torvalds
  (?)
  (?)
@ 2011-07-13 21:38           ` H. Peter Anvin
  2011-07-14  4:53             ` [PATCH v2] " Len Brown
  2011-07-14  4:53             ` [PATCH v2] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
  -1 siblings, 2 replies; 27+ messages in thread
From: H. Peter Anvin @ 2011-07-13 21:38 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Len Brown, Ingo Molnar, x86, linux-pm, linux-kernel,
	Thomas Gleixner, Alan Cox, Andrew Morton, Arjan van de Ven

On 07/13/2011 01:49 PM, Linus Torvalds wrote:
> Ack. Let's just do this. Ingo?
> 
>             Linus

Ingo is travelling this week, but this seems to have converged.

	-hpa

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-13 20:49           ` Linus Torvalds
  (?)
@ 2011-07-13 21:38           ` H. Peter Anvin
  -1 siblings, 0 replies; 27+ messages in thread
From: H. Peter Anvin @ 2011-07-13 21:38 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Andrew Morton, x86, linux-kernel, linux-pm, Ingo Molnar,
	Arjan van de Ven, Thomas Gleixner, Alan Cox

On 07/13/2011 01:49 PM, Linus Torvalds wrote:
> Ack. Let's just do this. Ingo?
> 
>             Linus

Ingo is travelling this week, but this seems to have converged.

	-hpa

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-13 21:38           ` H. Peter Anvin
@ 2011-07-14  4:53             ` Len Brown
  2011-07-14 19:35               ` Rafael J. Wysocki
                                 ` (4 more replies)
  2011-07-14  4:53             ` [PATCH v2] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
  1 sibling, 5 replies; 27+ messages in thread
From: Len Brown @ 2011-07-14  4:53 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Linus Torvalds, Ingo Molnar, x86, linux-pm, linux-kernel,
	Thomas Gleixner, Alan Cox, Andrew Morton, Arjan van de Ven

From: Len Brown <len.brown@intel.com>

Since 2.6.36 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility has
been available in-tree to update MSR_IA32_ENERGY_PERF_BIAS.

However, the typical BIOS fails to initialize the MSR, presumably
because this is handled by high-volume shrink-wrap operating systems...

Linux distros, on the other hand, do not yet invoke x86_energy_perf_policy(8).
As a result, WSM-EP, SNB, and later hardware from Intel will run in its
default hardware power-on state (performance), which assumes that users
care for performance at all costs and not for energy efficiency.
While that is fine for performance benchmarks, the hardware's intended default
operating point is "normal" mode...

Initialize the MSR to the "normal" by default during kernel boot.

x86_energy_perf_policy(8) is available to change the default after boot,
should the user have a different preference.

cc: stable@kernel.org
Signed-off-by: Len Brown <len.brown@intel.com>
---
 arch/x86/include/asm/msr-index.h |    3 +++
 arch/x86/kernel/cpu/intel.c      |   18 ++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 43a18c7..91fedd9 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -250,6 +250,9 @@
 #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE	0
+#define ENERGY_PERF_BIAS_NORMAL		6
+#define ENERGY_PERF_BIAS_POWERSWAVE	15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
 
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index d16c2c5..7c1ca07 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -448,6 +448,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 
 	if (cpu_has(c, X86_FEATURE_VMX))
 		detect_vmx_virtcap(c);
+
+	/*
+	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
+	 * x86_energy_perf_policy(8) is available to change it at run-time
+	 */
+	if (cpu_has(c, X86_FEATURE_EPB)) {
+		u64 epb;
+
+		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		if ((epb & 0xF) == 0) {
+			printk_once(KERN_WARNING, "x86: updated energy_perf_bias"
+				" to 'normal' from 'performance'\n"
+				"You can view and update epb via utility,"
+				" such as x86_energy_perf_policy(8)\n");
+			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
+			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		}
+	}
 }
 
 #ifdef CONFIG_X86_32
-- 
1.7.6.134.gcf13f



^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-13 21:38           ` H. Peter Anvin
  2011-07-14  4:53             ` [PATCH v2] " Len Brown
@ 2011-07-14  4:53             ` Len Brown
  1 sibling, 0 replies; 27+ messages in thread
From: Len Brown @ 2011-07-14  4:53 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Andrew Morton, x86, linux-kernel, Thomas Gleixner, Ingo Molnar,
	Linus Torvalds, linux-pm, Alan Cox, Arjan van de Ven

From: Len Brown <len.brown@intel.com>

Since 2.6.36 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility has
been available in-tree to update MSR_IA32_ENERGY_PERF_BIAS.

However, the typical BIOS fails to initialize the MSR, presumably
because this is handled by high-volume shrink-wrap operating systems...

Linux distros, on the other hand, do not yet invoke x86_energy_perf_policy(8).
As a result, WSM-EP, SNB, and later hardware from Intel will run in its
default hardware power-on state (performance), which assumes that users
care for performance at all costs and not for energy efficiency.
While that is fine for performance benchmarks, the hardware's intended default
operating point is "normal" mode...

Initialize the MSR to the "normal" by default during kernel boot.

x86_energy_perf_policy(8) is available to change the default after boot,
should the user have a different preference.

cc: stable@kernel.org
Signed-off-by: Len Brown <len.brown@intel.com>
---
 arch/x86/include/asm/msr-index.h |    3 +++
 arch/x86/kernel/cpu/intel.c      |   18 ++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 43a18c7..91fedd9 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -250,6 +250,9 @@
 #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE	0
+#define ENERGY_PERF_BIAS_NORMAL		6
+#define ENERGY_PERF_BIAS_POWERSWAVE	15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
 
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index d16c2c5..7c1ca07 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -448,6 +448,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 
 	if (cpu_has(c, X86_FEATURE_VMX))
 		detect_vmx_virtcap(c);
+
+	/*
+	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
+	 * x86_energy_perf_policy(8) is available to change it at run-time
+	 */
+	if (cpu_has(c, X86_FEATURE_EPB)) {
+		u64 epb;
+
+		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		if ((epb & 0xF) == 0) {
+			printk_once(KERN_WARNING, "x86: updated energy_perf_bias"
+				" to 'normal' from 'performance'\n"
+				"You can view and update epb via utility,"
+				" such as x86_energy_perf_policy(8)\n");
+			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
+			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		}
+	}
 }
 
 #ifdef CONFIG_X86_32
-- 
1.7.6.134.gcf13f

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH v2] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-14  4:53             ` [PATCH v2] " Len Brown
@ 2011-07-14 19:35               ` Rafael J. Wysocki
  2011-07-14 19:35               ` Rafael J. Wysocki
                                 ` (3 subsequent siblings)
  4 siblings, 0 replies; 27+ messages in thread
From: Rafael J. Wysocki @ 2011-07-14 19:35 UTC (permalink / raw)
  To: Len Brown
  Cc: H. Peter Anvin, Linus Torvalds, Ingo Molnar, x86, linux-pm,
	linux-kernel, Thomas Gleixner, Alan Cox, Andrew Morton,
	Arjan van de Ven

On Thursday, July 14, 2011, Len Brown wrote:
> From: Len Brown <len.brown@intel.com>
> 
> Since 2.6.36 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility has
> been available in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> 
> However, the typical BIOS fails to initialize the MSR, presumably
> because this is handled by high-volume shrink-wrap operating systems...
> 
> Linux distros, on the other hand, do not yet invoke x86_energy_perf_policy(8).
> As a result, WSM-EP, SNB, and later hardware from Intel will run in its
> default hardware power-on state (performance), which assumes that users
> care for performance at all costs and not for energy efficiency.
> While that is fine for performance benchmarks, the hardware's intended default
> operating point is "normal" mode...
> 
> Initialize the MSR to the "normal" by default during kernel boot.
> 
> x86_energy_perf_policy(8) is available to change the default after boot,
> should the user have a different preference.
> 
> cc: stable@kernel.org
> Signed-off-by: Len Brown <len.brown@intel.com>

Acked-by: Rafael J. Wysocki <rjw@sisk.pl>

> ---
>  arch/x86/include/asm/msr-index.h |    3 +++
>  arch/x86/kernel/cpu/intel.c      |   18 ++++++++++++++++++
>  2 files changed, 21 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
> index 43a18c7..91fedd9 100644
> --- a/arch/x86/include/asm/msr-index.h
> +++ b/arch/x86/include/asm/msr-index.h
> @@ -250,6 +250,9 @@
>  #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
>  
>  #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
> +#define ENERGY_PERF_BIAS_PERFORMANCE	0
> +#define ENERGY_PERF_BIAS_NORMAL		6
> +#define ENERGY_PERF_BIAS_POWERSWAVE	15
>  
>  #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
>  
> diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
> index d16c2c5..7c1ca07 100644
> --- a/arch/x86/kernel/cpu/intel.c
> +++ b/arch/x86/kernel/cpu/intel.c
> @@ -448,6 +448,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
>  
>  	if (cpu_has(c, X86_FEATURE_VMX))
>  		detect_vmx_virtcap(c);
> +
> +	/*
> +	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
> +	 * x86_energy_perf_policy(8) is available to change it at run-time
> +	 */
> +	if (cpu_has(c, X86_FEATURE_EPB)) {
> +		u64 epb;
> +
> +		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		if ((epb & 0xF) == 0) {
> +			printk_once(KERN_WARNING, "x86: updated energy_perf_bias"
> +				" to 'normal' from 'performance'\n"
> +				"You can view and update epb via utility,"
> +				" such as x86_energy_perf_policy(8)\n");
> +			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
> +			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		}
> +	}
>  }
>  
>  #ifdef CONFIG_X86_32
> 


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-14  4:53             ` [PATCH v2] " Len Brown
  2011-07-14 19:35               ` Rafael J. Wysocki
@ 2011-07-14 19:35               ` Rafael J. Wysocki
  2011-07-14 21:12               ` [tip:x86/cpu] x86, intel, " tip-bot for Len Brown
                                 ` (2 subsequent siblings)
  4 siblings, 0 replies; 27+ messages in thread
From: Rafael J. Wysocki @ 2011-07-14 19:35 UTC (permalink / raw)
  To: Len Brown
  Cc: Andrew Morton, x86, linux-kernel, Thomas Gleixner,
	H. Peter Anvin, Ingo Molnar, Linus Torvalds, linux-pm, Alan Cox,
	Arjan van de Ven

On Thursday, July 14, 2011, Len Brown wrote:
> From: Len Brown <len.brown@intel.com>
> 
> Since 2.6.36 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
> Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility has
> been available in-tree to update MSR_IA32_ENERGY_PERF_BIAS.
> 
> However, the typical BIOS fails to initialize the MSR, presumably
> because this is handled by high-volume shrink-wrap operating systems...
> 
> Linux distros, on the other hand, do not yet invoke x86_energy_perf_policy(8).
> As a result, WSM-EP, SNB, and later hardware from Intel will run in its
> default hardware power-on state (performance), which assumes that users
> care for performance at all costs and not for energy efficiency.
> While that is fine for performance benchmarks, the hardware's intended default
> operating point is "normal" mode...
> 
> Initialize the MSR to the "normal" by default during kernel boot.
> 
> x86_energy_perf_policy(8) is available to change the default after boot,
> should the user have a different preference.
> 
> cc: stable@kernel.org
> Signed-off-by: Len Brown <len.brown@intel.com>

Acked-by: Rafael J. Wysocki <rjw@sisk.pl>

> ---
>  arch/x86/include/asm/msr-index.h |    3 +++
>  arch/x86/kernel/cpu/intel.c      |   18 ++++++++++++++++++
>  2 files changed, 21 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
> index 43a18c7..91fedd9 100644
> --- a/arch/x86/include/asm/msr-index.h
> +++ b/arch/x86/include/asm/msr-index.h
> @@ -250,6 +250,9 @@
>  #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
>  
>  #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
> +#define ENERGY_PERF_BIAS_PERFORMANCE	0
> +#define ENERGY_PERF_BIAS_NORMAL		6
> +#define ENERGY_PERF_BIAS_POWERSWAVE	15
>  
>  #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
>  
> diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
> index d16c2c5..7c1ca07 100644
> --- a/arch/x86/kernel/cpu/intel.c
> +++ b/arch/x86/kernel/cpu/intel.c
> @@ -448,6 +448,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
>  
>  	if (cpu_has(c, X86_FEATURE_VMX))
>  		detect_vmx_virtcap(c);
> +
> +	/*
> +	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
> +	 * x86_energy_perf_policy(8) is available to change it at run-time
> +	 */
> +	if (cpu_has(c, X86_FEATURE_EPB)) {
> +		u64 epb;
> +
> +		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		if ((epb & 0xF) == 0) {
> +			printk_once(KERN_WARNING, "x86: updated energy_perf_bias"
> +				" to 'normal' from 'performance'\n"
> +				"You can view and update epb via utility,"
> +				" such as x86_energy_perf_policy(8)\n");
> +			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
> +			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> +		}
> +	}
>  }
>  
>  #ifdef CONFIG_X86_32
> 

^ permalink raw reply	[flat|nested] 27+ messages in thread

* [tip:x86/cpu] x86, intel, power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-14  4:53             ` [PATCH v2] " Len Brown
  2011-07-14 19:35               ` Rafael J. Wysocki
  2011-07-14 19:35               ` Rafael J. Wysocki
@ 2011-07-14 21:12               ` tip-bot for Len Brown
  2011-07-15  0:18                 ` [tip:x86/cpu] x86, msr: Fix typo in ENERGY_PERF_BIAS_POWERSAVE tip-bot for H. Peter Anvin
  2011-07-15 21:37               ` [PATCH v3] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
  2011-07-15 21:37               ` Len Brown
  4 siblings, 1 reply; 27+ messages in thread
From: tip-bot for Len Brown @ 2011-07-14 21:12 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, stable, tglx, hpa, rjw, len.brown

Commit-ID:  abe48b108247e9b90b4c6739662a2e5c765ed114
Gitweb:     http://git.kernel.org/tip/abe48b108247e9b90b4c6739662a2e5c765ed114
Author:     Len Brown <len.brown@intel.com>
AuthorDate: Thu, 14 Jul 2011 00:53:24 -0400
Committer:  H. Peter Anvin <hpa@linux.intel.com>
CommitDate: Thu, 14 Jul 2011 12:13:42 -0700

x86, intel, power: Initialize MSR_IA32_ENERGY_PERF_BIAS

Since 2.6.36 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility has
been available in-tree to update MSR_IA32_ENERGY_PERF_BIAS.

However, the typical BIOS fails to initialize the MSR, presumably
because this is handled by high-volume shrink-wrap operating systems...

Linux distros, on the other hand, do not yet invoke x86_energy_perf_policy(8).
As a result, WSM-EP, SNB, and later hardware from Intel will run in its
default hardware power-on state (performance), which assumes that users
care for performance at all costs and not for energy efficiency.
While that is fine for performance benchmarks, the hardware's intended default
operating point is "normal" mode...

Initialize the MSR to the "normal" by default during kernel boot.

x86_energy_perf_policy(8) is available to change the default after boot,
should the user have a different preference.

Signed-off-by: Len Brown <len.brown@intel.com>
Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1107140051020.18606@x980
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: <stable@kernel.org>
---
 arch/x86/include/asm/msr-index.h |    3 +++
 arch/x86/kernel/cpu/intel.c      |   18 ++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 485b4f1..23a9d89 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -259,6 +259,9 @@
 #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE	0
+#define ENERGY_PERF_BIAS_NORMAL		6
+#define ENERGY_PERF_BIAS_POWERSWAVE	15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
 
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index 1edf5ba..da0d779 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -456,6 +456,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 
 	if (cpu_has(c, X86_FEATURE_VMX))
 		detect_vmx_virtcap(c);
+
+	/*
+	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
+	 * x86_energy_perf_policy(8) is available to change it at run-time
+	 */
+	if (cpu_has(c, X86_FEATURE_EPB)) {
+		u64 epb;
+
+		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		if ((epb & 0xF) == 0) {
+			printk_once(KERN_WARNING, "x86: updated energy_perf_bias"
+				" to 'normal' from 'performance'\n"
+				"You can view and update epb via utility,"
+				" such as x86_energy_perf_policy(8)\n");
+			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
+			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		}
+	}
 }
 
 #ifdef CONFIG_X86_32

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [tip:x86/cpu] x86, msr: Fix typo in ENERGY_PERF_BIAS_POWERSAVE
  2011-07-14 21:12               ` [tip:x86/cpu] x86, intel, " tip-bot for Len Brown
@ 2011-07-15  0:18                 ` tip-bot for H. Peter Anvin
  0 siblings, 0 replies; 27+ messages in thread
From: tip-bot for H. Peter Anvin @ 2011-07-15  0:18 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, tglx, hpa, len.brown

Commit-ID:  4bb82178f5cb074783aaeaa06f9f840c67af7707
Gitweb:     http://git.kernel.org/tip/4bb82178f5cb074783aaeaa06f9f840c67af7707
Author:     H. Peter Anvin <hpa@linux.intel.com>
AuthorDate: Thu, 14 Jul 2011 14:58:44 -0700
Committer:  H. Peter Anvin <hpa@linux.intel.com>
CommitDate: Thu, 14 Jul 2011 14:58:44 -0700

x86, msr: Fix typo in ENERGY_PERF_BIAS_POWERSAVE

Fix a trivial typo in the name of the constant
ENERGY_PERF_BIAS_POWERSAVE.  This didn't cause trouble because this
constant is not currently used for anything.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Len Brown <len.brown@intel.com>
Link: http://lkml.kernel.org/r/tip-abe48b108247e9b90b4c6739662a2e5c765ed114@git.kernel.org
---
 arch/x86/include/asm/msr-index.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 23a9d89..d96bdb2 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -261,7 +261,7 @@
 #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
 #define ENERGY_PERF_BIAS_PERFORMANCE	0
 #define ENERGY_PERF_BIAS_NORMAL		6
-#define ENERGY_PERF_BIAS_POWERSWAVE	15
+#define ENERGY_PERF_BIAS_POWERSAVE	15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
 

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v3] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-14  4:53             ` [PATCH v2] " Len Brown
                                 ` (3 preceding siblings ...)
  2011-07-15 21:37               ` [PATCH v3] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
@ 2011-07-15 21:37               ` Len Brown
  2011-07-16 18:52                 ` [tip:x86/cpu] x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message tip-bot for Len Brown
  4 siblings, 1 reply; 27+ messages in thread
From: Len Brown @ 2011-07-15 21:37 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Linus Torvalds, Ingo Molnar, x86, linux-pm, linux-kernel,
	Thomas Gleixner, Alan Cox, Andrew Morton, Arjan van de Ven

From: Len Brown <len.brown@intel.com>

Since 2.6.36 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility has
been available in-tree to update MSR_IA32_ENERGY_PERF_BIAS.

However, the typical BIOS fails to initialize the MSR, presumably
because this is handled by high-volume shrink-wrap operating systems...

Linux distros, on the other hand, do not yet invoke x86_energy_perf_policy(8).
As a result, WSM-EP, SNB, and later hardware from Intel will run in its
default hardware power-on state (performance), which assumes that users
care for performance at all costs and not for energy efficiency.
While that is fine for performance benchmarks, the hardware's intended default
operating point is "normal" mode...

Initialize the MSR to the "normal" by default during kernel boot.

x86_energy_perf_policy(8) is available to change the default after boot,
should the user have a different preference.

cc: stable@kernel.org
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
---
v3: fix #define typo in header and ',' typo in printk
shorten printk to fix in 80 columns

 arch/x86/include/asm/msr-index.h |    3 +++
 arch/x86/kernel/cpu/intel.c      |   18 ++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 43a18c7..55a11e0 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -250,6 +250,9 @@
 #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE	0
+#define ENERGY_PERF_BIAS_NORMAL		6
+#define ENERGY_PERF_BIAS_POWERSAVE	15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
 
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index d16c2c5..24cba78 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -448,6 +448,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 
 	if (cpu_has(c, X86_FEATURE_VMX))
 		detect_vmx_virtcap(c);
+
+	/*
+	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
+	 * x86_energy_perf_policy(8) is available to change it at run-time
+	 */
+	if (cpu_has(c, X86_FEATURE_EPB)) {
+		u64 epb;
+
+		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		if ((epb & 0xF) == ENERGY_PERF_BIAS_PERFORMANCE) {
+			printk_once(KERN_WARNING "ENERGY_PERF_BIAS:"
+				" Set to 'normal', was 'performance'\n"
+				"ENERGY_PERF_BIAS: View and update with"
+				" x86_energy_perf_policy(8)\n");
+			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
+			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		}
+	}
 }
 
 #ifdef CONFIG_X86_32
-- 
1.7.6.134.gcf13f


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v3] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS
  2011-07-14  4:53             ` [PATCH v2] " Len Brown
                                 ` (2 preceding siblings ...)
  2011-07-14 21:12               ` [tip:x86/cpu] x86, intel, " tip-bot for Len Brown
@ 2011-07-15 21:37               ` Len Brown
  2011-07-15 21:37               ` Len Brown
  4 siblings, 0 replies; 27+ messages in thread
From: Len Brown @ 2011-07-15 21:37 UTC (permalink / raw)
  To: H. Peter Anvin
  Cc: Andrew Morton, x86, linux-kernel, Thomas Gleixner, Ingo Molnar,
	Linus Torvalds, linux-pm, Alan Cox, Arjan van de Ven

From: Len Brown <len.brown@intel.com>

Since 2.6.36 (23016bf0d25), Linux prints the existence of "epb" in /proc/cpuinfo,
Since 2.6.38 (d5532ee7b40), the x86_energy_perf_policy(8) utility has
been available in-tree to update MSR_IA32_ENERGY_PERF_BIAS.

However, the typical BIOS fails to initialize the MSR, presumably
because this is handled by high-volume shrink-wrap operating systems...

Linux distros, on the other hand, do not yet invoke x86_energy_perf_policy(8).
As a result, WSM-EP, SNB, and later hardware from Intel will run in its
default hardware power-on state (performance), which assumes that users
care for performance at all costs and not for energy efficiency.
While that is fine for performance benchmarks, the hardware's intended default
operating point is "normal" mode...

Initialize the MSR to the "normal" by default during kernel boot.

x86_energy_perf_policy(8) is available to change the default after boot,
should the user have a different preference.

cc: stable@kernel.org
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
---
v3: fix #define typo in header and ',' typo in printk
shorten printk to fix in 80 columns

 arch/x86/include/asm/msr-index.h |    3 +++
 arch/x86/kernel/cpu/intel.c      |   18 ++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 43a18c7..55a11e0 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -250,6 +250,9 @@
 #define MSR_IA32_TEMPERATURE_TARGET	0x000001a2
 
 #define MSR_IA32_ENERGY_PERF_BIAS	0x000001b0
+#define ENERGY_PERF_BIAS_PERFORMANCE	0
+#define ENERGY_PERF_BIAS_NORMAL		6
+#define ENERGY_PERF_BIAS_POWERSAVE	15
 
 #define MSR_IA32_PACKAGE_THERM_STATUS		0x000001b1
 
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index d16c2c5..24cba78 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -448,6 +448,24 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 
 	if (cpu_has(c, X86_FEATURE_VMX))
 		detect_vmx_virtcap(c);
+
+	/*
+	 * Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
+	 * x86_energy_perf_policy(8) is available to change it at run-time
+	 */
+	if (cpu_has(c, X86_FEATURE_EPB)) {
+		u64 epb;
+
+		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		if ((epb & 0xF) == ENERGY_PERF_BIAS_PERFORMANCE) {
+			printk_once(KERN_WARNING "ENERGY_PERF_BIAS:"
+				" Set to 'normal', was 'performance'\n"
+				"ENERGY_PERF_BIAS: View and update with"
+				" x86_energy_perf_policy(8)\n");
+			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
+			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
+		}
+	}
 }
 
 #ifdef CONFIG_X86_32
-- 
1.7.6.134.gcf13f

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [tip:x86/cpu] x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message
  2011-07-15 21:37               ` Len Brown
@ 2011-07-16 18:52                 ` tip-bot for Len Brown
  2011-08-18 17:23                   ` Christoph Fritz
  0 siblings, 1 reply; 27+ messages in thread
From: tip-bot for Len Brown @ 2011-07-16 18:52 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, table, tglx, hpa, len.brown

Commit-ID:  17edf2d79f1ea6dfdb4c444801d928953b9f98d6
Gitweb:     http://git.kernel.org/tip/17edf2d79f1ea6dfdb4c444801d928953b9f98d6
Author:     Len Brown <len.brown@intel.com>
AuthorDate: Fri, 15 Jul 2011 17:37:15 -0400
Committer:  H. Peter Anvin <hpa@linux.intel.com>
CommitDate: Fri, 15 Jul 2011 15:13:55 -0700

x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message

Fix the printk_once() so that it actually prints (didn't print before
due to a stray comma.)

[ hpa: changed to an incremental patch and adjusted the description
  accordingly. ]

Signed-off-by: Len Brown <len.brown@intel.com>
Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1107151732480.18606@x980
Cc: <table@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
---
 arch/x86/kernel/cpu/intel.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index da0d779..ed6086e 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -465,11 +465,11 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
 		u64 epb;
 
 		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
-		if ((epb & 0xF) == 0) {
-			printk_once(KERN_WARNING, "x86: updated energy_perf_bias"
-				" to 'normal' from 'performance'\n"
-				"You can view and update epb via utility,"
-				" such as x86_energy_perf_policy(8)\n");
+		if ((epb & 0xF) == ENERGY_PERF_BIAS_PERFORMANCE) {
+			printk_once(KERN_WARNING "ENERGY_PERF_BIAS:"
+				" Set to 'normal', was 'performance'\n"
+				"ENERGY_PERF_BIAS: View and update with"
+				" x86_energy_perf_policy(8)\n");
 			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
 			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
 		}

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [tip:x86/cpu] x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message
  2011-07-16 18:52                 ` [tip:x86/cpu] x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message tip-bot for Len Brown
@ 2011-08-18 17:23                   ` Christoph Fritz
  0 siblings, 0 replies; 27+ messages in thread
From: Christoph Fritz @ 2011-08-18 17:23 UTC (permalink / raw)
  To: H. Peter Anvin, Len Brown
  Cc: stable, Ingo Molnar, Thomas Gleixner, linux-kernel

On Sat, 2011-07-16 at 18:52 +0000, tip-bot for Len Brown wrote:
> Commit-ID:  17edf2d79f1ea6dfdb4c444801d928953b9f98d6
> Gitweb:     http://git.kernel.org/tip/17edf2d79f1ea6dfdb4c444801d928953b9f98d6
> Author:     Len Brown <len.brown@intel.com>
> AuthorDate: Fri, 15 Jul 2011 17:37:15 -0400
> Committer:  H. Peter Anvin <hpa@linux.intel.com>
> CommitDate: Fri, 15 Jul 2011 15:13:55 -0700
> 
> x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message
> 
> Fix the printk_once() so that it actually prints (didn't print before
> due to a stray comma.)
> 
> [ hpa: changed to an incremental patch and adjusted the description
>   accordingly. ]
> 
> Signed-off-by: Len Brown <len.brown@intel.com>
> Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1107151732480.18606@x980
> Cc: <table@kernel.org>

This "table" should be stable :)

Cc: <stable@kernel.org>
Reviewed-by: Christoph Fritz <chf.fritz@googlemail.com>

Thanks,
 Christoph

> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
> ---
>  arch/x86/kernel/cpu/intel.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
> index da0d779..ed6086e 100644
> --- a/arch/x86/kernel/cpu/intel.c
> +++ b/arch/x86/kernel/cpu/intel.c
> @@ -465,11 +465,11 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
>  		u64 epb;
>  
>  		rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
> -		if ((epb & 0xF) == 0) {
> -			printk_once(KERN_WARNING, "x86: updated energy_perf_bias"
> -				" to 'normal' from 'performance'\n"
> -				"You can view and update epb via utility,"
> -				" such as x86_energy_perf_policy(8)\n");
> +		if ((epb & 0xF) == ENERGY_PERF_BIAS_PERFORMANCE) {
> +			printk_once(KERN_WARNING "ENERGY_PERF_BIAS:"
> +				" Set to 'normal', was 'performance'\n"
> +				"ENERGY_PERF_BIAS: View and update with"
> +				" x86_energy_perf_policy(8)\n");
>  			epb = (epb & ~0xF) | ENERGY_PERF_BIAS_NORMAL;
>  			wrmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
>  		}
> --
> 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/




^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2011-08-18 17:19 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-30 22:21 [PATCH] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
2011-04-14  9:08 ` Ingo Molnar
2011-04-15  6:25   ` Len Brown
2011-04-15 10:17     ` Ingo Molnar
2011-07-13 20:44       ` Len Brown
2011-07-13 20:44         ` Len Brown
2011-07-13 20:49         ` Linus Torvalds
2011-07-13 20:49           ` Linus Torvalds
2011-07-13 21:38           ` H. Peter Anvin
2011-07-13 21:38           ` H. Peter Anvin
2011-07-14  4:53             ` [PATCH v2] " Len Brown
2011-07-14 19:35               ` Rafael J. Wysocki
2011-07-14 19:35               ` Rafael J. Wysocki
2011-07-14 21:12               ` [tip:x86/cpu] x86, intel, " tip-bot for Len Brown
2011-07-15  0:18                 ` [tip:x86/cpu] x86, msr: Fix typo in ENERGY_PERF_BIAS_POWERSAVE tip-bot for H. Peter Anvin
2011-07-15 21:37               ` [PATCH v3] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
2011-07-15 21:37               ` Len Brown
2011-07-16 18:52                 ` [tip:x86/cpu] x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message tip-bot for Len Brown
2011-08-18 17:23                   ` Christoph Fritz
2011-07-14  4:53             ` [PATCH v2] x86 intel power: Initialize MSR_IA32_ENERGY_PERF_BIAS Len Brown
2011-04-15 10:17     ` [PATCH] " Ingo Molnar
2011-04-20 13:14     ` Pavel Machek
2011-07-13 20:51       ` Len Brown
2011-07-13 20:51       ` Len Brown
2011-04-20 13:14     ` Pavel Machek
2011-04-15  6:25   ` Len Brown
2011-04-14  9:08 ` Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.