* [PATCH] MIPS: Hibernate: flush TLB entries earlier
@ 2014-12-19 14:26 ` Huacai Chen
0 siblings, 0 replies; 4+ messages in thread
From: Huacai Chen @ 2014-12-19 14:26 UTC (permalink / raw)
To: Ralf Baechle
Cc: John Crispin, Steven J. Hill, linux-mips, Fuxin Zhang,
Zhangjin Wu, Huacai Chen, stable
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().
Cc: <stable@vger.kernel.org>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
---
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 32a7c82..e7567c8 100644
--- 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)
--
1.7.7.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] MIPS: Hibernate: flush TLB entries earlier
@ 2014-12-19 14:26 ` Huacai Chen
0 siblings, 0 replies; 4+ messages in thread
From: Huacai Chen @ 2014-12-19 14:26 UTC (permalink / raw)
To: Ralf Baechle
Cc: John Crispin, Steven J. Hill, linux-mips, Fuxin Zhang,
Zhangjin Wu, Huacai Chen, stable
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().
Cc: <stable@vger.kernel.org>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
---
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 32a7c82..e7567c8 100644
--- 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)
--
1.7.7.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] MIPS: Hibernate: flush TLB entries earlier
2014-12-19 14:26 ` Huacai Chen
(?)
@ 2014-12-19 15:02 ` Ralf Baechle
2014-12-20 1:58 ` Huacai Chen
-1 siblings, 1 reply; 4+ messages in thread
From: Ralf Baechle @ 2014-12-19 15:02 UTC (permalink / raw)
To: Huacai Chen
Cc: John Crispin, Steven J. Hill, linux-mips, Fuxin Zhang,
Zhangjin Wu, stable
On Fri, Dec 19, 2014 at 10:26:24PM +0800, Huacai Chen wrote:
> 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().
>
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Huacai Chen <chenhc@lemote.com>
> ---
> 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 32a7c82..e7567c8 100644
> --- 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
I'd like to keep the assembler code to a minimum. Can you rename
swsusp_arch_resume and create a new wrapper function in C named
swsusp_arch_resume() which calls the old swsusp_arch_resume() after
calling local_flush_tlb_all(), something like that?
Thanks,
Ralf
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] MIPS: Hibernate: flush TLB entries earlier
2014-12-19 15:02 ` Ralf Baechle
@ 2014-12-20 1:58 ` Huacai Chen
0 siblings, 0 replies; 4+ messages in thread
From: Huacai Chen @ 2014-12-20 1:58 UTC (permalink / raw)
To: Ralf Baechle
Cc: John Crispin, Steven J. Hill, Linux MIPS Mailing List,
Fuxin Zhang, Zhangjin Wu, stable
Hi, Ralf,
Maybe it is better to have two patches: the first fix the bug, and the
second restructure files and functions?
Huacai
On Fri, Dec 19, 2014 at 11:02 PM, Ralf Baechle <ralf@linux-mips.org> wrote:
> On Fri, Dec 19, 2014 at 10:26:24PM +0800, Huacai Chen wrote:
>
>> 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().
>>
>> Cc: <stable@vger.kernel.org>
>> Signed-off-by: Huacai Chen <chenhc@lemote.com>
>> ---
>> 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 32a7c82..e7567c8 100644
>> --- 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
>
> I'd like to keep the assembler code to a minimum. Can you rename
> swsusp_arch_resume and create a new wrapper function in C named
> swsusp_arch_resume() which calls the old swsusp_arch_resume() after
> calling local_flush_tlb_all(), something like that?
>
> Thanks,
>
> Ralf
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-12-20 1:58 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-19 14:26 [PATCH] MIPS: Hibernate: flush TLB entries earlier Huacai Chen
2014-12-19 14:26 ` Huacai Chen
2014-12-19 15:02 ` Ralf Baechle
2014-12-20 1:58 ` Huacai Chen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.