lkml.org 
[lkml]   [2013]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 50 Watt idle power regression bisected to Linux-3.10
On 12/11/2013 08:25 PM, Mike Galbraith wrote:
> arch/x86/include/asm/mwait.h | 4 ++--
> arch/x86/kernel/cpu/common.c | 7 ++++---
> arch/x86/kernel/setup_percpu.c | 1 +
> 3 files changed, 7 insertions(+), 5 deletions(-)
>
> Index: linux-2.6/arch/x86/kernel/cpu/common.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/cpu/common.c
> +++ linux-2.6/arch/x86/kernel/cpu/common.c
> @@ -65,13 +65,14 @@ void __init setup_cpu_local_masks(void)
> }
>
> /* allocate percpu area for mwait doorbell */
> -char __percpu *mwait_doorbell;
> +DEFINE_PER_CPU(char *, mwait_doorbell);
> +EXPORT_PER_CPU_SYMBOL(mwait_doorbell);
>

Sorry, this is wrong. This is NOT a percpu variable, it is a pointer to
a percpu allocation, but the variable itself is not a percpu variable.
This explains your boom.

> void __init setup_mwait_doorbell(void)
> {
> if (boot_cpu_has(X86_FEATURE_MWAIT)) {
> - mwait_doorbell = __alloc_percpu(boot_cpu_data.clflush_size,
> - boot_cpu_data.clflush_size);
> + mwait_doorbell = __alloc_percpu(boot_cpu_data.x86_clflush_size,
> + boot_cpu_data.x86_clflush_size);
>
> if (!mwait_doorbell) {
> /* This should never happen... */

-hpa




\
 
 \ /
  Last update: 2013-12-12 06:01    [W:0.171 / U:0.968 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site