On Mon, Oct 14, 2019 at 02:01:41PM -0700, Jim Mattson wrote: > On Mon, Oct 14, 2019 at 12:05 PM Sean Christopherson > <sean.j.christopherson@xxxxxxxxx> wrote: > > > > On Sat, Oct 12, 2019 at 10:36:15AM -0700, Jim Mattson wrote: > > > On Fri, Oct 11, 2019 at 5:18 PM Sean Christopherson > > > <sean.j.christopherson@xxxxxxxxx> wrote: > > > > > > > > On Fri, Oct 11, 2019 at 12:40:29PM -0700, Aaron Lewis wrote: > > > > > @@ -5887,6 +5887,9 @@ static void svm_cpuid_update(struct kvm_vcpu *vcpu) > > > > > { > > > > > struct vcpu_svm *svm = to_svm(vcpu); > > > > > > > > > > + vcpu->arch.xsaves_enabled = guest_cpuid_has(vcpu, X86_FEATURE_XSAVE) && > > > > > + boot_cpu_has(X86_FEATURE_XSAVES); > > > > > > > > This looks very much like a functional change to SVM, which feels wrong > > > > for a patch with a subject of "KVM: VMX: Use wrmsr for switching between > > > > guest and host IA32_XSS" feels wrong. Shouldn't this be unconditionally > > > > set false in this patch, and then enabled in " kvm: svm: Add support for > > > > XSAVES on AMD"? > > > > > > Nothing is being enabled here. Vcpu->arch.xsaves_enabled simply tells > > > us whether or not the guest can execute the XSAVES instruction. Any > > > guest with the ability to set CR4.OSXSAVE on an AMD host that supports > > > XSAVES can use the instruction. > > > > Not enabling per se, but it's a functional change as it means MSR_IA32_XSS > > will be written in kvm_load_{guest,host}_xsave_controls() if host_xss!=0. > > Fortunately, host_xss is guaranteed to be zero for the nonce. :-) And then someone backports something and things go sideways. > Perhaps the commit message just needs to be updated? The only > alternatives I see are: > 1. Deliberately introducing buggy code to be removed later in the series, or > 2. Introducing SVM-specific code first, to be removed later in the series. I'd go with: 2a. Make the change actually local to VMX as the subject implies, and introduce SVM-specific code in a separate patch, to be removed later. Then the series looks like: KVM: VMX: Remove unneeded check for X86_FEATURE_XSAVE KVM: VMX: Use wrmsr for switching between guest and host IA32_XSS kvm: svm: Add support for XSAVES on AMD KVM: x86: Move IA32_XSS handling to common x86 code KVM: x86: Add IA32_XSS to the emulated_msrs list It'd mean introducing vcpu->arch.xsaves_enabled in the VMX patch and temporarily having it unused by SVM, but that's minor and can't backfire if host_xss suddently is non-zero. Side topic, I'm pretty sure vcpu->guest_xcr0_loaded is a waste of an 'int' and a conditional branch. VMX and SVM are the only users, and both unconditionally pair kvm_load_guest_xcr0() with kvm_put_guest_xcr0(). Removing the useless flag as another prerequisite patch would make the intermediate VMX and SVM patches slightly less awkward as they wouldn't have to decide between adding a kludgy check on guest_xcr0_loaded and ignoring it altogether.