• Sean Christopherson's avatar
    KVM: x86: Ensure guest's FPU state is loaded when accessing for emulation · a7baead7
    Sean Christopherson authored
    Lock the FPU regs and reload the current thread's FPU state, which holds
    the guest's FPU state, to the CPU registers if necessary prior to
    accessing guest FPU state as part of emulation.  kernel_fpu_begin() can
    be called from softirq context, therefore KVM must ensure softirqs are
    disabled (locking the FPU regs disables softirqs) when touching CPU FPU
    state.
    
    Note, for all intents and purposes this reverts commit 6ab0b9fe
    ("x86,kvm: remove KVM emulator get_fpu / put_fpu"), but at the time it
    was applied, removing get/put_fpu() was correct.  The re-introduction
    of {get,put}_fpu() is necessitated by the deferring of FPU state load.
    
    Fixes: 5f409e20 ("x86/fpu: Defer FPU state load until return to userspace")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    a7baead7
emulate.c 152 KB