Subject: Re: [PATCH] powerpc: fixup lwsync at runtime

From: Michael Ellerman <[email-masked]>
Date: Thu, 03 Jul 2008 15:55:26 +1000

On Wed, 2008-07-02 at 10:57 -0500, Kumar Gala wrote:
> On Jul 2, 2008, at 4:34 AM, Michael Ellerman wrote:
> 
> > On Tue, 2008-07-01 at 09:48 -0500, Kumar Gala wrote:
> >> On Jul 1, 2008, at 1:29 AM, Michael Ellerman wrote:
> >
> >>>> diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/
> >>>> setup_32.c
> >>>> index 9e83add..0109e7f 100644
> >>>> --- a/arch/powerpc/kernel/setup_32.c
> >>>> +++ b/arch/powerpc/kernel/setup_32.c
> >>>> @@ -101,6 +101,10 @@ unsigned long __init early_init(unsigned long
> >>>> dt_ptr)
> >>>> 			  PTRRELOC(&__start___ftr_fixup),
> >>>> 			  PTRRELOC(&__stop___ftr_fixup));
> >>>>
> >>>> +	do_lwsync_fixups(spec->cpu_features,
> >>>> +			 PTRRELOC(&__start___lwsync_fixup),
> >>>> +			 PTRRELOC(&__stop___lwsync_fixup));
> >>>> +
> >>>
> >>> This could be changed to use cur_cpu_spec->cpu_features, and then  
> >>> all
> >>> the call sites would be passing that, which would mean
> >>> do_lwsync_fixups() could just check cur_cpu_spec->cpu_features
> >>> directly.
> >>
> >> cur_cpu_spec and spec at this point arent the same thing.
> >
> > Aren't they? I must be missing something:
> 
> There is an issue with how ppc32 classic gets here and relocation.  If  
> I change the call to:
> 
>          do_lwsync_fixups(cur_cpu_spec->cpu_features,
>                           PTRRELOC(&__start___lwsync_fixup),
>                           PTRRELOC(&__stop___lwsync_fixup));
> 
> I can't boot on a 6xx based machine anymore.

OK, I guess it needs a PTRRELOC(), but it's not that important, don't
worry about it.

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person