Move the EDX initialization at vCPU RESET, which is now identical between
VMX and SVM, into common code.
No functional change intended.
Reviewed-by: Reiji Watanabe <reijiw@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <
20210713163324.627647-20-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
 
 }
 #endif
 
-static inline u32 get_rdx_init_val(void)
-{
-       return 0x600; /* P6 family */
-}
-
 static inline void kvm_inject_gp(struct kvm_vcpu *vcpu, u32 error_code)
 {
        kvm_queue_exception_e(vcpu, GP_VECTOR, error_code);
 
 static void svm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
 {
        struct vcpu_svm *svm = to_svm(vcpu);
-       u32 dummy;
-       u32 eax = 1;
 
        svm->spec_ctrl = 0;
        svm->virt_spec_ctrl = 0;
 
        init_vmcb(vcpu);
 
-       /*
-        * Fall back to KVM's default Family/Model/Stepping if no CPUID match
-        * is found.  Note, it's impossible to get a match at RESET since KVM
-        * emulates RESET before exposing the vCPU to userspace, i.e. it's
-        * impossible for kvm_cpuid() to find a valid entry on RESET.  But, go
-        * through the motions in case that's ever remedied, and to be pedantic.
-        */
-       if (!kvm_cpuid(vcpu, &eax, &dummy, &dummy, &dummy, true))
-               eax = get_rdx_init_val();
-       kvm_rdx_write(vcpu, eax);
-
        if (kvm_vcpu_apicv_active(vcpu) && !init_event)
                avic_update_vapic_bar(svm, APIC_DEFAULT_PHYS_BASE);
 }
 
 static void vmx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
 {
        struct vcpu_vmx *vmx = to_vmx(vcpu);
-       u32 eax, dummy;
        u64 cr0;
 
        vmx->rmode.vm86_active = 0;
 
        vmx->msr_ia32_umwait_control = 0;
 
-       eax = 1;
-       if (!kvm_cpuid(vcpu, &eax, &dummy, &dummy, &dummy, true))
-               eax = get_rdx_init_val();
-       kvm_rdx_write(vcpu, eax);
-
        vmx->hv_deadline_tsc = -1;
        kvm_set_cr8(vcpu, 0);
 
 
 void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
 {
        unsigned long old_cr0 = kvm_read_cr0(vcpu);
+       u32 eax, dummy;
 
        kvm_lapic_reset(vcpu, init_event);
 
        vcpu->arch.regs_avail = ~0;
        vcpu->arch.regs_dirty = ~0;
 
+       /*
+        * Fall back to KVM's default Family/Model/Stepping of 0x600 (P6/Athlon)
+        * if no CPUID match is found.  Note, it's impossible to get a match at
+        * RESET since KVM emulates RESET before exposing the vCPU to userspace,
+        * i.e. it'simpossible for kvm_cpuid() to find a valid entry on RESET.
+        * But, go through the motions in case that's ever remedied.
+        */
+       eax = 1;
+       if (!kvm_cpuid(vcpu, &eax, &dummy, &dummy, &dummy, true))
+               eax = 0x600;
+       kvm_rdx_write(vcpu, eax);
+
        vcpu->arch.ia32_xss = 0;
 
        static_call(kvm_x86_vcpu_reset)(vcpu, init_event);