[PATCH 0/8] 8xx: Misc fixes for buggy insn
Joakim Tjernlund
joakim.tjernlund at transmode.se
Fri Nov 6 20:29:44 EST 2009
>
> Scott Wood <scottwood at freescale.com> wrote on 06/11/2009 01:33:05:
> >
> > On Wed, Nov 04, 2009 at 02:38:32PM +0100, Joakim Tjernlund wrote:
> > > Here is the latest(last?) round of this series. I
> > > hope I got everything right now.
> > > Scott and Rex, please test and send ACK/NACK.
> > >
> > > Jocke
> > >
> > > Joakim Tjernlund (8):
> > > 8xx: invalidate non present TLBs
> >
> > This works, and is an important fix -- it should be applied even if the rest
> > of the patchset isn't ready.
>
> True.
>
> >
> > > 8xx: Update TLB asm so it behaves as linux mm expects.
>
> I think this is ready too.
>
> > > 8xx: Tag DAR with 0x00f0 to catch buggy instructions.
> >
> > Up through this point works.
>
> hmm, here tagging of DAR is in place, do you ever hit the
> page fault handler with address == 0x00f0? If you do,
> the kernel somehow manges to fix it instead of erroring out.
>
> I do notice one thing, I forgot to add the CPU6 errata to
> the DAR tagging. Are you using the CPU6 errata?
DAR isn't affected by CPU6 so this should not be a problem.
>
> >
> > > 8xx: Fixup DAR from buggy dcbX instructions.
> >
> > With this, the kernel hangs after "Mount-cache hash table entries: 512".
>
> Somewhat surprising result. I didn't expect you would even hit this
> condition now as we haven't enabled the use of dcbX insn yet.
> The only thing I can think of is the you hit the 0x00f0 due to other
> dcbX insn use and the kernel managed to fixup this in the page fault handler
> by pure luck before.
>
> The only thing I can thing of being wrong here is your suggested fix:
> + lis r11, (swapper_pg_dir-PAGE_OFFSET)@h
> + ori r11, r11, (swapper_pg_dir-PAGE_OFFSET)@l
> + rlwimi r11, r10, 22, 0xffc
>
> What if you change that back to what worked for you before:
> lis r11, swapper_pg_dir at h
> ori r11, r11, swapper_pg_dir at l
> rlwinm r11, r11, 0, 0x3ffff000
> rlwimi r11, r10, 22, 0xffc
> or possibly
> lis r11, swapper_pg_dir at h
> ori r11, r11, swapper_pg_dir at l
> subis r11, r11, PAGE_OFFSET at h
> rlwimi r11, r10, 22, 0xffc
>
> hmm, some missed CPU6 errata calls in DARFixup too.
Same here, not a problem
I did notice a bug that has been there a long time so
I don't think it is the problem:
+ add r10, r10, r25 ;b 151f
+ add r10, r10, r25 ;b 151f
should be r26 instead:
+ add r10, r10, r25 ;b 151f
+ add r10, r10, r26 ;b 151f
Jocke
More information about the Linuxppc-dev
mailing list