Subject: Re: PS3 platform is broken on Linux 3.7.0

From: Michael Ellerman <[email-masked]>
Date: Mon, 11 Feb 2013 14:39:08 +1100

On Sun, Feb 10, 2013 at 09:51:37PM +0400, Phileas Fogg wrote:
> 
> >Phileas Fogg < [email-masked] > writes:
> >
> 
> Patch:
> 
> --- arch/powerpc/kernel/setup_64.c.old    2013-02-10 19:34:53.787366191 +0100
> +++ arch/powerpc/kernel/setup_64.c    2013-02-10 19:35:38.834035478 +0100
> @@ -186,6 +186,9 @@
>      initialise_paca(&boot_paca, 0);
>      setup_paca(&boot_paca);
>  
> +    /* Allow percpu accesses to "work" until we setup percpu data */
> +    boot_paca.data_offset = 0;
> +

This is correct.

>      /* Initialize lockdep early or else spinlocks will blow */
>      lockdep_init();
>  
> @@ -208,8 +211,6 @@
>  
>      /* Fix up paca fields required for the boot cpu */
>      get_paca()->cpu_start = 1;
> -    /* Allow percpu accesses to "work" until we setup percpu data */
> -    get_paca()->data_offset = 0;

But this is not.

As you said, they are different pacas, so we need to make sure both
boot_paca, and "the paca of the boot cpu" are initialised with
data_offset = 0.

I'll send a patch to sort it.

cheers