* [PATCH] Fix FPU flag race condition.
@ 2012-04-09 16:02 Steven J. Hill
2012-04-10 11:38 ` Sergei Shtylyov
0 siblings, 1 reply; 2+ messages in thread
From: Steven J. Hill @ 2012-04-09 16:02 UTC (permalink / raw)
To: linux-mips, ralf; +Cc: Steven J. Hill, Leonid Yegoshin
From: "Steven J. Hill" <sjhill@mips.com>
Subject: [PATCH] Fix race condition with FPU thread task flag during context
Signed-off-by: Leonid Yegoshin <yegoshin@mips.com>
Signed-off-by: Steven J. Hill <sjhill@mips.com>
---
arch/mips/include/asm/switch_to.h | 6 ++++--
arch/mips/kernel/r4k_switch.S | 12 +++---------
2 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/arch/mips/include/asm/switch_to.h b/arch/mips/include/asm/switch_to.h
index 5d33621..4f8ddba8 100644
--- a/arch/mips/include/asm/switch_to.h
+++ b/arch/mips/include/asm/switch_to.h
@@ -22,7 +22,7 @@ struct task_struct;
* switch_to(n) should switch tasks to task nr n, first
* checking that n isn't the current task, in which case it does nothing.
*/
-extern asmlinkage void *resume(void *last, void *next, void *next_ti);
+extern asmlinkage void *resume(void *last, void *next, void *next_ti, u32 __usedfpu);
extern unsigned int ll_bit;
extern struct task_struct *ll_task;
@@ -66,11 +66,13 @@ do { \
#define switch_to(prev, next, last) \
do { \
+ u32 __usedfpu; \
__mips_mt_fpaff_switch_to(prev); \
if (cpu_has_dsp) \
__save_dsp(prev); \
__clear_software_ll_bit(); \
- (last) = resume(prev, next, task_thread_info(next)); \
+ __usedfpu = test_and_clear_tsk_thread_flag(prev, TIF_USEDFPU); \
+ (last) = resume(prev, next, task_thread_info(next), __usedfpu); \
} while (0)
#define finish_arch_switch(prev) \
diff --git a/arch/mips/kernel/r4k_switch.S b/arch/mips/kernel/r4k_switch.S
index 9414f93..a675752 100644
--- a/arch/mips/kernel/r4k_switch.S
+++ b/arch/mips/kernel/r4k_switch.S
@@ -41,7 +41,7 @@
/*
* task_struct *resume(task_struct *prev, task_struct *next,
- * struct thread_info *next_ti)
+ * struct thread_info *next_ti, u32 __usedfpu)
*/
.align 5
LEAF(resume)
@@ -53,16 +53,10 @@
/*
* check if we need to save FPU registers
*/
- PTR_L t3, TASK_THREAD_INFO(a0)
- LONG_L t0, TI_FLAGS(t3)
- li t1, _TIF_USEDFPU
- and t2, t0, t1
- beqz t2, 1f
- nor t1, zero, t1
- and t0, t0, t1
- LONG_S t0, TI_FLAGS(t3)
+ beqz a3, 1f
+ PTR_L t3, TASK_THREAD_INFO(a0)
/*
* clear saved user stack CU1 bit
*/
--
1.7.9.6
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] Fix FPU flag race condition.
2012-04-09 16:02 [PATCH] Fix FPU flag race condition Steven J. Hill
@ 2012-04-10 11:38 ` Sergei Shtylyov
0 siblings, 0 replies; 2+ messages in thread
From: Sergei Shtylyov @ 2012-04-10 11:38 UTC (permalink / raw)
To: Steven J. Hill; +Cc: linux-mips, ralf, Leonid Yegoshin
Hello.
On 09-04-2012 20:02, Steven J. Hill wrote:
> From: "Steven J. Hill" <sjhill@mips.com>
> Subject:
Why repeat the subject, modified?
> [PATCH] Fix race condition with FPU thread task flag during context
Switch?
> Signed-off-by: Leonid Yegoshin <yegoshin@mips.com>
> Signed-off-by: Steven J. Hill <sjhill@mips.com>
WBR, Sergei
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-04-10 11:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-09 16:02 [PATCH] Fix FPU flag race condition Steven J. Hill
2012-04-10 11:38 ` Sergei Shtylyov
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.