• Sean Christopherson's avatar
    KVM: nVMX: Reset register cache (available and dirty masks) on VMCS switch · e5d03de5
    Sean Christopherson authored
    Reset the per-vCPU available and dirty register masks when switching
    between vmcs01 and vmcs02, as the masks track state relative to the
    current VMCS.  The stale masks don't cause problems in the current code
    base because the registers are either unconditionally written on nested
    transitions or, in the case of segment registers, have an additional
    tracker that is manually reset.
    
    Note, by dropping (previously implicitly, now explicitly) the dirty mask
    when switching the active VMCS, KVM is technically losing writes to the
    associated fields.  But, the only regs that can be dirtied (RIP, RSP and
    PDPTRs) are unconditionally written on nested transitions, e.g. explicit
    writeback is a waste of cycles, and a WARN_ON would be rather pointless.
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200415203454.8296-3-sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    e5d03de5
nested.c 198 KB