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.
Signed-off-by: Joakim Tjernlund <joakim.tjernl...@transmode.se> --- arch/ppc/mm/fault.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/arch/ppc/mm/fault.c b/arch/ppc/mm/fault.c index 9d3ce2d..874005a 100644 --- a/arch/ppc/mm/fault.c +++ b/arch/ppc/mm/fault.c @@ -116,7 +116,13 @@ void do_page_fault(struct pt_regs *regs, unsigned long address, else is_write = error_code & 0x02000000; #endif /* CONFIG_4xx || CONFIG_BOOKE */ - +#if defined(CONFIG_8xx) + /* 8xx does no invalidate TLBs that are ~PRESENT, + * do it here. + */ + if (error_code & 0x40000000) + _tlbie(address); +#endif #if defined(CONFIG_XMON) || defined(CONFIG_KGDB) if (debugger_fault_handler && regs->trap == 0x300) { debugger_fault_handler(regs); -- 1.7.3.4 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev