KVM: x86: clear SMM flags before loading state while leaving SMM
authorSean Christopherson <[email protected]>
Tue, 2 Apr 2019 15:03:11 +0000 (08:03 -0700)
committerPaolo Bonzini <[email protected]>
Tue, 16 Apr 2019 13:37:36 +0000 (15:37 +0200)
commit9ec19493fb86d6d5fbf9286b94ff21e56ef66376
tree3de9d350da3033b6ba31a107b6b05cc73cbdafa8
parentc5833c7a43a66bfe2f36439cb2f1281a588668af
KVM: x86: clear SMM flags before loading state while leaving SMM

RSM emulation is currently broken on VMX when the interrupted guest has
CR4.VMXE=1.  Stop dancing around the issue of HF_SMM_MASK being set when
loading SMSTATE into architectural state, e.g. by toggling it for
problematic flows, and simply clear HF_SMM_MASK prior to loading
architectural state (from SMRAM save state area).

Reported-by: Jon Doron <[email protected]>
Cc: Jim Mattson <[email protected]>
Cc: Liran Alon <[email protected]>
Cc: Vitaly Kuznetsov <[email protected]>
Fixes: 5bea5123cbf0 ("KVM: VMX: check nested state and CR4.VMXE against SMM")
Signed-off-by: Sean Christopherson <[email protected]>
Tested-by: Vitaly Kuznetsov <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
arch/x86/kvm/emulate.c
arch/x86/kvm/svm.c
arch/x86/kvm/vmx/vmx.c