diff options
| -rw-r--r-- | 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 e7dae82c1285..26fb6b990b0a 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
| @@ -40,7 +40,7 @@ | |||
| 40 | #include <asm/uaccess.h> | 40 | #include <asm/uaccess.h> |
| 41 | #include <asm/tlbflush.h> | 41 | #include <asm/tlbflush.h> |
| 42 | #include <asm/siginfo.h> | 42 | #include <asm/siginfo.h> |
| 43 | 43 | #include <mm/mmu_decl.h> | |
| 44 | 44 | ||
| 45 | #ifdef CONFIG_KPROBES | 45 | #ifdef CONFIG_KPROBES |
| 46 | static inline int notify_page_fault(struct pt_regs *regs) | 46 | static inline int notify_page_fault(struct pt_regs *regs) |
| @@ -246,6 +246,12 @@ good_area: | |||
| 246 | goto bad_area; | 246 | goto bad_area; |
| 247 | #endif /* CONFIG_6xx */ | 247 | #endif /* CONFIG_6xx */ |
| 248 | #if defined(CONFIG_8xx) | 248 | #if defined(CONFIG_8xx) |
| 249 | /* 8xx sometimes need to load a invalid/non-present TLBs. | ||
| 250 | * These must be invalidated separately as linux mm don't. | ||
| 251 | */ | ||
| 252 | if (error_code & 0x40000000) /* no translation? */ | ||
| 253 | _tlbil_va(address, 0, 0, 0); | ||
| 254 | |||
| 249 | /* The MPC8xx seems to always set 0x80000000, which is | 255 | /* The MPC8xx seems to always set 0x80000000, which is |
| 250 | * "undefined". Of those that can be set, this is the only | 256 | * "undefined". Of those that can be set, this is the only |
| 251 | * one which seems bad. | 257 | * one which seems bad. |
