[PATCH 3/6] 8xx: invalidate non present TLBs
Joakim Tjernlund
joakim.tjernlund at transmode.se
Fri Oct 9 06:22:57 EST 2009
Benjamin Herrenschmidt <benh at kernel.crashing.org> wrote on 07/10/2009 23:18:05:
>
> On Wed, 2009-10-07 at 22:46 +0200, Joakim Tjernlund wrote:
> > 8xx sometimes need to load a invalid/non-present TLBs in
> > it DTLB asm handler.
> > These must be invalidated separaly as linux mm don't.
>
> not sure about the dsisr test here, what is the point ?
Without this patch I get about twice as many DTLB errors( on 2.4)
I have also noted that all my dcbst DTLB has the store bit set:
trap:300 address:10030b8c, dar:10030b8c,err:42000000 dcbst
Thare are comments in the kernel that dcbst wrongly
generates TLB Errors with store set on 8xx. Is this really so?
Should dcbst always trap as a load?
Jocke
>
> Cheers,
> Ben.
>
> > ---
> > arch/powerpc/mm/fault.c | 8 +++++++-
> > 1 files changed, 7 insertions(+), 1 deletions(-)
> >
> > diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
> > index 7699394..72941c7 100644
> > --- a/arch/powerpc/mm/fault.c
> > +++ b/arch/powerpc/mm/fault.c
> > @@ -39,7 +39,7 @@
> > #include <asm/uaccess.h>
> > #include <asm/tlbflush.h>
> > #include <asm/siginfo.h>
> > -
> > +#include <mm/mmu_decl.h>
> >
> > #ifdef CONFIG_KPROBES
> > static inline int notify_page_fault(struct pt_regs *regs)
> > @@ -243,6 +243,12 @@ good_area:
> > goto bad_area;
> > #endif /* CONFIG_6xx */
> > #if defined(CONFIG_8xx)
> > + /* 8xx sometimes need to load a invalid/non-present TLBs.
> > + * These must be invalidated separately as linux mm don't.
> > + */
> > + if (error_code & 0x40000000) /* no translation? */
> > + _tlbil_va(address);
> > +
> > /* The MPC8xx seems to always set 0x80000000, which is
> > * "undefined". Of those that can be set, this is the only
> > * one which seems bad.
>
>
>
>
More information about the Linuxppc-dev
mailing list