Patch "KVM: x86: Invoke kvm_smm_changed() immediately after clearing SMM flag" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    KVM: x86: Invoke kvm_smm_changed() immediately after clearing SMM flag

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     kvm-x86-invoke-kvm_smm_changed-immediately-after-cle.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a8b62eccd42f0f4ba325d420ba74865e870b3903
Author: Sean Christopherson <seanjc@xxxxxxxxxx>
Date:   Wed Jun 9 11:56:14 2021 -0700

    KVM: x86: Invoke kvm_smm_changed() immediately after clearing SMM flag
    
    [ Upstream commit fa75e08bbe4f8ea609f61bbb6c04b3bb2b38c793 ]
    
    Move RSM emulation's call to kvm_smm_changed() from .post_leave_smm() to
    .exiting_smm(), leaving behind the MMU context reset.  The primary
    motivation is to allow for future cleanup, but this also fixes a bug of
    sorts by queueing KVM_REQ_EVENT even if RSM causes shutdown, e.g. to let
    an INIT wake the vCPU from shutdown.  Of course, KVM doesn't properly
    emulate a shutdown state, e.g. KVM doesn't block SMIs after shutdown, and
    immediately exits to userspace, so the event request is a moot point in
    practice.
    
    Moving kvm_smm_changed() also moves the RSM tracepoint.  This isn't
    strictly necessary, but will allow consolidating the SMI and RSM
    tracepoints in a future commit (by also moving the SMI tracepoint).
    Invoking the tracepoint before loading SMRAM state also means the SMBASE
    that reported in the tracepoint will point that the state that will be
    used for RSM, as opposed to the SMBASE _after_ RSM completes, which is
    arguably a good thing if the tracepoint is being used to debug a RSM/SMM
    issue.
    
    Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
    Message-Id: <20210609185619.992058-5-seanjc@xxxxxxxxxx>
    Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
    Stable-dep-of: 055f37f84e30 ("KVM: x86: emulator: update the emulation mode after rsm")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 0afae6755868..ef43bfa1b3a8 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -7004,7 +7004,7 @@ static void emulator_exiting_smm(struct x86_emulate_ctxt *ctxt)
 	struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt);
 
 	vcpu->arch.hflags &= ~(HF_SMM_MASK | HF_SMM_INSIDE_NMI_MASK);
-	kvm_mmu_reset_context(vcpu);
+	kvm_smm_changed(vcpu);
 }
 
 static int emulator_pre_leave_smm(struct x86_emulate_ctxt *ctxt,
@@ -7015,7 +7015,7 @@ static int emulator_pre_leave_smm(struct x86_emulate_ctxt *ctxt,
 
 static void emulator_post_leave_smm(struct x86_emulate_ctxt *ctxt)
 {
-	kvm_smm_changed(emul_to_vcpu(ctxt));
+	kvm_mmu_reset_context(emul_to_vcpu(ctxt));
 }
 
 static void emulator_triple_fault(struct x86_emulate_ctxt *ctxt)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux