|
@@ -7767,16 +7767,12 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
|
|
|
|
|
|
int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
|
|
|
{
|
|
|
- int r;
|
|
|
-
|
|
|
kvm_vcpu_mtrr_init(vcpu);
|
|
|
- r = vcpu_load(vcpu);
|
|
|
- if (r)
|
|
|
- return r;
|
|
|
+ vcpu_load(vcpu);
|
|
|
kvm_vcpu_reset(vcpu, false);
|
|
|
kvm_mmu_setup(vcpu);
|
|
|
vcpu_put(vcpu);
|
|
|
- return r;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
|
|
@@ -7786,13 +7782,15 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
|
|
|
|
|
|
kvm_hv_vcpu_postcreate(vcpu);
|
|
|
|
|
|
- if (vcpu_load(vcpu))
|
|
|
+ if (mutex_lock_killable(&vcpu->mutex))
|
|
|
return;
|
|
|
+ vcpu_load(vcpu);
|
|
|
msr.data = 0x0;
|
|
|
msr.index = MSR_IA32_TSC;
|
|
|
msr.host_initiated = true;
|
|
|
kvm_write_tsc(vcpu, &msr);
|
|
|
vcpu_put(vcpu);
|
|
|
+ mutex_unlock(&vcpu->mutex);
|
|
|
|
|
|
if (!kvmclock_periodic_sync)
|
|
|
return;
|
|
@@ -7803,11 +7801,9 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu)
|
|
|
|
|
|
void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
|
|
|
{
|
|
|
- int r;
|
|
|
vcpu->arch.apf.msr_val = 0;
|
|
|
|
|
|
- r = vcpu_load(vcpu);
|
|
|
- BUG_ON(r);
|
|
|
+ vcpu_load(vcpu);
|
|
|
kvm_mmu_unload(vcpu);
|
|
|
vcpu_put(vcpu);
|
|
|
|
|
@@ -8179,9 +8175,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
|
|
|
|
|
|
static void kvm_unload_vcpu_mmu(struct kvm_vcpu *vcpu)
|
|
|
{
|
|
|
- int r;
|
|
|
- r = vcpu_load(vcpu);
|
|
|
- BUG_ON(r);
|
|
|
+ vcpu_load(vcpu);
|
|
|
kvm_mmu_unload(vcpu);
|
|
|
vcpu_put(vcpu);
|
|
|
}
|