[PATCH] powerpc: fixup lwsync at runtime
Michael Ellerman
michael at ellerman.id.au
Wed Jul 2 19:34:08 EST 2008
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:
struct cpu_spec * __init identify_cpu(unsigned long offset, unsigned int pvr)
{
struct cpu_spec *s = cpu_specs;
struct cpu_spec *t = &the_cpu_spec;
int i;
for (i = 0; i < ARRAY_SIZE(cpu_specs); i++,s++)
if ((pvr & s->pvr_mask) == s->pvr_value) {
...
*t = *s;
*PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;
...
return s;
then:
unsigned long __init early_init(unsigned long dt_ptr)
{
...
spec = identify_cpu(offset, mfspr(SPRN_PVR));
do_feature_fixups(spec->cpu_features,
PTRRELOC(&__start___ftr_fixup),
PTRRELOC(&__stop___ftr_fixup));
}
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20080702/6eb30cea/attachment.pgp>
More information about the Linuxppc-dev
mailing list