On 28/05/20 17:19, Xiaoyao Li wrote: > kvm_x86_ops.cpuid_update() is used to update vmx/svm settings based on > updated CPUID settings. So it's supposed to be called after CPUIDs are > fully updated, not in the middle stage. > > Signed-off-by: Xiaoyao Li <xiaoyao.li@xxxxxxxxx> Are you seeing anything bad happening from this? Paolo > --- > arch/x86/kvm/cpuid.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c > index cd708b0b460a..753739bc1bf0 100644 > --- a/arch/x86/kvm/cpuid.c > +++ b/arch/x86/kvm/cpuid.c > @@ -208,8 +208,11 @@ int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu, > vcpu->arch.cpuid_nent = cpuid->nent; > cpuid_fix_nx_cap(vcpu); > kvm_apic_set_version(vcpu); > - kvm_x86_ops.cpuid_update(vcpu); > r = kvm_update_cpuid(vcpu); > + if (r) > + goto out; > + > + kvm_x86_ops.cpuid_update(vcpu); > > out: > vfree(cpuid_entries); > @@ -231,8 +234,11 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu, > goto out; > vcpu->arch.cpuid_nent = cpuid->nent; > kvm_apic_set_version(vcpu); > - kvm_x86_ops.cpuid_update(vcpu); > r = kvm_update_cpuid(vcpu); > + if (r) > + goto out; > + > + kvm_x86_ops.cpuid_update(vcpu); > out: > return r; > } >