summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/fpu/xsave.h2
-rw-r--r--arch/x86/kernel/fpu/core.c5
2 files changed, 3 insertions, 4 deletions
diff --git a/arch/x86/include/asm/fpu/xsave.h b/arch/x86/include/asm/fpu/xsave.h
index a10e66582c1b..2f2ed322263f 100644
--- a/arch/x86/include/asm/fpu/xsave.h
+++ b/arch/x86/include/asm/fpu/xsave.h
@@ -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
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index a617aac1cf81..79a0b99d53b6 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -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);
}