Message ID | 1294695479-344-4-git-send-email-Joakim.Tjernlund@transmode.se (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
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);
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.Tjernlund@transmode.se> --- arch/ppc/mm/fault.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)