The only difference is usage of switch_fpu_return() vs. fpregs_restore_userregs(). In turn, these are only different if there is no FPU at all, but KVM requires one. Therefore use the pre-made export---the code is simpler and there is no functional change. Signed-off-by: Paolo Bonzini --- arch/x86/kernel/fpu/core.c | 2 +- arch/x86/kvm/fpu.h | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c index 3ab27fb86618..8ded41b023a2 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -858,7 +858,6 @@ void switch_fpu_return(void) fpregs_restore_userregs(); } -EXPORT_SYMBOL_FOR_KVM(switch_fpu_return); void fpregs_lock_and_load(void) { @@ -877,6 +876,7 @@ void fpregs_lock_and_load(void) fpregs_assert_state_consistent(); } +EXPORT_SYMBOL_FOR_KVM(fpregs_lock_and_load); #ifdef CONFIG_X86_DEBUG_FPU /* diff --git a/arch/x86/kvm/fpu.h b/arch/x86/kvm/fpu.h index f898781b6a06..b6a03d8fa8af 100644 --- a/arch/x86/kvm/fpu.h +++ b/arch/x86/kvm/fpu.h @@ -149,11 +149,7 @@ static inline void _kvm_write_mmx_reg(int reg, const u64 *data) static inline void kvm_fpu_get(void) { - fpregs_lock(); - - fpregs_assert_state_consistent(); - if (test_thread_flag(TIF_NEED_FPU_LOAD)) - switch_fpu_return(); + fpregs_lock_and_load(); } static inline void kvm_fpu_put(void) -- 2.52.0