x86/fpu: Simplify __save_fpu()
authorIngo Molnar <mingo@kernel.org>
Mon, 27 Apr 2015 07:23:43 +0000 (09:23 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 19 May 2015 13:47:53 +0000 (15:47 +0200)
__save_fpu() has this pattern:

if (unlikely(system_state == SYSTEM_BOOTING))
xsave_state_booting(&fpu->state.xsave);
else
xsave_state(&fpu->state.xsave);

... but it does not actually get called during system bootup.

So remove the complication and always call xsave_state().

To make sure this assumption is correct, add a WARN_ONCE()
debug check to xsave_state().

Reviewed-by: Borislav Petkov <bp@alien8.de>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/fpu/xsave.h
arch/x86/kernel/fpu/core.c

index a10e66582c1b8e3dd66e715526c7763fe7afdf9b..2f2ed322263fbbf10ab3a8da88ce34d44a578551 100644 (file)
@@ -133,6 +133,8 @@ static inline int xsave_state(struct xsave_struct *fx)
        u32 hmask = mask >> 32;
        int err = 0;
 
+       WARN_ON(system_state == SYSTEM_BOOTING);
+
        /*
         * If xsaves is enabled, xsaves replaces xsaveopt because
         * it supports compact format and supervisor states in addition to
index a617aac1cf81508a846dec7b844cb85df189a25a..79a0b99d53b6712dbd85b7b882bebbd7d7e67500 100644 (file)
@@ -172,10 +172,7 @@ EXPORT_SYMBOL_GPL(irq_ts_restore);
 static void __save_fpu(struct fpu *fpu)
 {
        if (use_xsave()) {
-               if (unlikely(system_state == SYSTEM_BOOTING))
-                       xsave_state_booting(&fpu->state.xsave);
-               else
-                       xsave_state(&fpu->state.xsave);
+               xsave_state(&fpu->state.xsave);
        } else {
                fpu_fxsave(fpu);
        }