| From a843d00d038b11267279e3b5388222320f9ddc1d Mon Sep 17 00:00:00 2001 |
| From: Huacai Chen <chenhc@lemote.com> |
| Date: Sun, 29 Mar 2015 10:54:05 +0800 |
| Subject: MIPS: Hibernate: flush TLB entries earlier |
| |
| From: Huacai Chen <chenhc@lemote.com> |
| |
| commit a843d00d038b11267279e3b5388222320f9ddc1d upstream. |
| |
| We found that TLB mismatch not only happens after kernel resume, but |
| also happens during snapshot restore. So move it to the beginning of |
| swsusp_arch_suspend(). |
| |
| Signed-off-by: Huacai Chen <chenhc@lemote.com> |
| Cc: Steven J. Hill <Steven.Hill@imgtec.com> |
| Cc: linux-mips@linux-mips.org |
| Cc: Fuxin Zhang <zhangfx@lemote.com> |
| Cc: Zhangjin Wu <wuzhangjin@gmail.com> |
| Patchwork: https://patchwork.linux-mips.org/patch/9621/ |
| Signed-off-by: Ralf Baechle <ralf@linux-mips.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/mips/power/hibernate.S | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/arch/mips/power/hibernate.S |
| +++ b/arch/mips/power/hibernate.S |
| @@ -30,6 +30,8 @@ LEAF(swsusp_arch_suspend) |
| END(swsusp_arch_suspend) |
| |
| LEAF(swsusp_arch_resume) |
| + /* Avoid TLB mismatch during and after kernel resume */ |
| + jal local_flush_tlb_all |
| PTR_L t0, restore_pblist |
| 0: |
| PTR_L t1, PBE_ADDRESS(t0) /* source */ |
| @@ -43,7 +45,6 @@ LEAF(swsusp_arch_resume) |
| bne t1, t3, 1b |
| PTR_L t0, PBE_NEXT(t0) |
| bnez t0, 0b |
| - jal local_flush_tlb_all /* Avoid TLB mismatch after kernel resume */ |
| PTR_LA t0, saved_regs |
| PTR_L ra, PT_R31(t0) |
| PTR_L sp, PT_R29(t0) |