static int kvm_hv_vcpu_init(struct kvm_vcpu *vcpu)
 {
-       struct kvm_vcpu_hv *hv_vcpu;
+       struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
        int i;
 
+       if (hv_vcpu)
+               return 0;
+
        hv_vcpu = kzalloc(sizeof(struct kvm_vcpu_hv), GFP_KERNEL_ACCOUNT);
        if (!hv_vcpu)
                return -ENOMEM;
        struct kvm_vcpu_hv_synic *synic;
        int r;
 
-       if (!to_hv_vcpu(vcpu)) {
-               r = kvm_hv_vcpu_init(vcpu);
-               if (r)
-                       return r;
-       }
+       r = kvm_hv_vcpu_init(vcpu);
+       if (r)
+               return r;
 
        synic = to_hv_synic(vcpu);
 
        if (!host && !vcpu->arch.hyperv_enabled)
                return 1;
 
-       if (!to_hv_vcpu(vcpu)) {
-               if (kvm_hv_vcpu_init(vcpu))
-                       return 1;
-       }
+       if (kvm_hv_vcpu_init(vcpu))
+               return 1;
 
        if (kvm_hv_msr_partition_wide(msr)) {
                int r;
        if (!host && !vcpu->arch.hyperv_enabled)
                return 1;
 
-       if (!to_hv_vcpu(vcpu)) {
-               if (kvm_hv_vcpu_init(vcpu))
-                       return 1;
-       }
+       if (kvm_hv_vcpu_init(vcpu))
+               return 1;
 
        if (kvm_hv_msr_partition_wide(msr)) {
                int r;
                return;
        }
 
-       if (!to_hv_vcpu(vcpu) && kvm_hv_vcpu_init(vcpu))
+       if (kvm_hv_vcpu_init(vcpu))
                return;
 
        hv_vcpu = to_hv_vcpu(vcpu);