mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-05 22:26:40 +07:00
x86/fpu: Simplify __save_fpu()
__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>
This commit is contained in:
parent
32b49b3c83
commit
72ee6f87ad
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user