• P
    KVM: x86: SVM: don't set VMLOAD/VMSAVE intercepts on vCPU reset · 36e8194d
    Paolo Bonzini 提交于
    Commit adc2a237 ("KVM: nSVM: improve SYSENTER emulation on AMD"),
    made init_vmcb set vmload/vmsave intercepts unconditionally,
    and relied on svm_vcpu_after_set_cpuid to clear them when possible.
    
    However init_vmcb is also called when the vCPU is reset, and it is
    not followed by another call to svm_vcpu_after_set_cpuid because
    the CPUID is already set.  This mistake makes the VMSAVE/VMLOAD intercept
    to be set when it is not needed, and harms performance of the nested
    guest.
    
    Extract the relevant parts of svm_vcpu_after_set_cpuid so that they
    can be called again on reset.
    
    Fixes: adc2a237 ("KVM: nSVM: improve SYSENTER emulation on AMD")
    Signed-off-by: NMaxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    36e8194d
svm.c 125.3 KB