diff options
author | Huacai Chen <chenhc@lemote.com> | 2015-03-29 10:54:05 +0800 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2015-08-07 00:32:02 +0100 |
commit | c72fbde01bc60208d3a0c1cc985a5457ea8e0ee0 (patch) | |
tree | f42001f9992fee925ac908d7d111e0564844d44d /arch | |
parent | a43724adb415f21865d66d7fb8bc5b71626740ec (diff) | |
download | kernel_samsung_smdk4412-c72fbde01bc60208d3a0c1cc985a5457ea8e0ee0.zip kernel_samsung_smdk4412-c72fbde01bc60208d3a0c1cc985a5457ea8e0ee0.tar.gz kernel_samsung_smdk4412-c72fbde01bc60208d3a0c1cc985a5457ea8e0ee0.tar.bz2 |
MIPS: Hibernate: flush TLB entries earlier
commit 2a21dc7c196209d94cb570a0d340faa6c760f7f8 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: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/power/hibernate.S | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/mips/power/hibernate.S b/arch/mips/power/hibernate.S index 5bf34ec..2ca1735 100644 --- a/arch/mips/power/hibernate.S +++ b/arch/mips/power/hibernate.S @@ -31,6 +31,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 */ @@ -44,7 +46,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) |