public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
  • * Re: [PATCH 0/3] KVM: x86: clear HF_SMM_MASK before loading state
           [not found] <20190402150311.29481-1-sean.j.christopherson@intel.com>
           [not found] ` <20190402150311.29481-2-sean.j.christopherson@intel.com>
    @ 2019-04-10  9:25 ` Paolo Bonzini
      1 sibling, 0 replies; 3+ messages in thread
    From: Paolo Bonzini @ 2019-04-10  9:25 UTC (permalink / raw)
      To: Sean Christopherson, Radim Krčmář, Joerg Roedel
      Cc: kvm, Jon Doron, Jim Mattson, Liran Alon, Vitaly Kuznetsov
    
    On 02/04/19 17:03, Sean Christopherson wrote:
    > RSM emulation is currently broken on VMX when the interrupted guest has
    > CR4.VMXE=1.  Similar breakage has also occurred in the past due to
    > HF_SMM_MASK being cleared only after RSM completes, i.e. loading non-SMM
    > state while is_smm() returns true is unsurprisingly problematic.
    > 
    > Rather than dance around the issue of HF_SMM_MASK being set when loading
    > SMSTATE into architectural state, rework RSM emulation itself to clear
    > HF_SMM_MASK prior to loading architectural state.   AFAICT, the only
    > motivation for having HF_SMM_MASK set throughout is so that the memory
    > access from GET_SMSTATE() are tagged with role.smm (though arguably even
    > that is unnecessary).  Sidestep that particular issue by taking the
    > enter_smm() approach of reading all of SMSTATE into a buffer and then
    > loading state from the buffer.
    > 
    > The actual fix is the same concept as an earlier RFC, but without first
    > moving em_rsm() to x86.c, i.e. doesn't add a big pile of dependent patches
    > before fixing the bug.  I'm still planning on sending a series to move
    > the bulk of em_rsm() to x86.c, but it'll be a true cleanup.
    > 
    > [1] https://patchwork.kernel.org/cover/10875623/
    > 
    > Sean Christopherson (3):
    >   KVM: x86: Load SMRAM in a single shot when leaving SMM
    >   KVM: x86: Open code kvm_set_hflags
    >   KVM: x86: clear SMM flags before loading state while leaving SMM
    > 
    >  arch/x86/include/asm/kvm_emulate.h |   4 +-
    >  arch/x86/include/asm/kvm_host.h    |   5 +-
    >  arch/x86/kvm/emulate.c             | 160 +++++++++++++++--------------
    >  arch/x86/kvm/svm.c                 |  30 ++----
    >  arch/x86/kvm/vmx/vmx.c             |   4 +-
    >  arch/x86/kvm/x86.c                 |  38 ++++---
    >  6 files changed, 118 insertions(+), 123 deletions(-)
    > 
    
    Queued, thanks.  I only changed the name of the emulator callback from
    smm_changed to post_leave_smm, since it is invoked only on RSM.
    
    Paolo
    
    ^ permalink raw reply	[flat|nested] 3+ messages in thread

  • end of thread, other threads:[~2019-04-10 14:17 UTC | newest]
    
    Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20190402150311.29481-1-sean.j.christopherson@intel.com>
         [not found] ` <20190402150311.29481-2-sean.j.christopherson@intel.com>
    2019-04-10  9:19   ` [PATCH 1/3] KVM: x86: Load SMRAM in a single shot when leaving SMM Paolo Bonzini
    2019-04-10 14:17     ` Sean Christopherson
    2019-04-10  9:25 ` [PATCH 0/3] KVM: x86: clear HF_SMM_MASK before loading state Paolo Bonzini
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox