]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] FPU context corrupted after resume
authorShaohua Li <shaohua.li@intel.com>
Sun, 30 Oct 2005 22:59:28 +0000 (14:59 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 31 Oct 2005 01:37:11 +0000 (17:37 -0800)
mxcsr_feature_mask_init isn't needed in suspend/resume time (we can use
boot time mask).  And actually it's harmful, as it clear task's saved
fxsave in resume.  This bug is widely seen by users using zsh.

(akpm: my eyes.  Fixed some surrounding whitespace mess)

Signed-off-by: Shaohua Li<shaohua.li@intel.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/power/cpu.c
arch/x86_64/kernel/suspend.c

index b27c5acc79d01fbd5ef053add840609bb4215365..1f1572692e0b7eeaa9c318a5051c98f4d8de2402 100644 (file)
@@ -51,16 +51,14 @@ void save_processor_state(void)
        __save_processor_state(&saved_context);
 }
 
-static void
-do_fpu_end(void)
+static void do_fpu_end(void)
 {
-        /* restore FPU regs if necessary */
-       /* Do it out of line so that gcc does not move cr0 load to some stupid place */
-        kernel_fpu_end();
-       mxcsr_feature_mask_init();
+       /*
+        * Restore FPU regs if necessary.
+        */
+       kernel_fpu_end();
 }
 
-
 static void fix_processor_context(void)
 {
        int cpu = smp_processor_id();
index f066c6ab3618f24a5d7d7323de14d4a9cd0c1144..02516823f514bd299dcf6c925d701367d2aa85ef 100644 (file)
@@ -63,13 +63,12 @@ void save_processor_state(void)
        __save_processor_state(&saved_context);
 }
 
-static void
-do_fpu_end(void)
+static void do_fpu_end(void)
 {
-        /* restore FPU regs if necessary */
-       /* Do it out of line so that gcc does not move cr0 load to some stupid place */
-        kernel_fpu_end();
-       mxcsr_feature_mask_init();
+       /*
+        * Restore FPU regs if necessary
+        */
+       kernel_fpu_end();
 }
 
 void __restore_processor_state(struct saved_context *ctxt)