KVM: MIPS: Move all vcpu init code into kvm_arch_vcpu_create()
Fold init() into create() now that the two are called back-to-back by common KVM code (kvm_vcpu_init() calls kvm_arch_vcpu_init() as its last action, and kvm_vm_ioctl_create_vcpu() calls kvm_arch_vcpu_create() immediately thereafter). Rinse and repeat for kvm_arch_vcpu_uninit() and kvm_arch_vcpu_destroy(). This paves the way for removing kvm_arch_vcpu_{un}init() entirely. No functional change intended. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
95a0d01eef
commit
d11dfed5d7
@ -294,6 +294,14 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
|
|||||||
kvm_debug("kvm @ %p: create cpu %d at %p\n",
|
kvm_debug("kvm @ %p: create cpu %d at %p\n",
|
||||||
vcpu->kvm, vcpu->vcpu_id, vcpu);
|
vcpu->kvm, vcpu->vcpu_id, vcpu);
|
||||||
|
|
||||||
|
err = kvm_mips_callbacks->vcpu_init(vcpu);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
hrtimer_init(&vcpu->arch.comparecount_timer, CLOCK_MONOTONIC,
|
||||||
|
HRTIMER_MODE_REL);
|
||||||
|
vcpu->arch.comparecount_timer.function = kvm_mips_comparecount_wakeup;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate space for host mode exception handlers that handle
|
* Allocate space for host mode exception handlers that handle
|
||||||
* guest mode exits
|
* guest mode exits
|
||||||
@ -307,7 +315,7 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
if (!gebase) {
|
if (!gebase) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
goto out;
|
goto out_uninit_vcpu;
|
||||||
}
|
}
|
||||||
kvm_debug("Allocated %d bytes for KVM Exception Handlers @ %p\n",
|
kvm_debug("Allocated %d bytes for KVM Exception Handlers @ %p\n",
|
||||||
ALIGN(size, PAGE_SIZE), gebase);
|
ALIGN(size, PAGE_SIZE), gebase);
|
||||||
@ -397,7 +405,8 @@ out_free_commpage:
|
|||||||
kfree(vcpu->arch.kseg0_commpage);
|
kfree(vcpu->arch.kseg0_commpage);
|
||||||
out_free_gebase:
|
out_free_gebase:
|
||||||
kfree(gebase);
|
kfree(gebase);
|
||||||
out:
|
out_uninit_vcpu:
|
||||||
|
kvm_mips_callbacks->vcpu_uninit(vcpu);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,6 +419,8 @@ void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
|
|||||||
kvm_mmu_free_memory_caches(vcpu);
|
kvm_mmu_free_memory_caches(vcpu);
|
||||||
kfree(vcpu->arch.guest_ebase);
|
kfree(vcpu->arch.guest_ebase);
|
||||||
kfree(vcpu->arch.kseg0_commpage);
|
kfree(vcpu->arch.kseg0_commpage);
|
||||||
|
|
||||||
|
kvm_mips_callbacks->vcpu_uninit(vcpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
|
int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
|
||||||
@ -1221,21 +1232,12 @@ static enum hrtimer_restart kvm_mips_comparecount_wakeup(struct hrtimer *timer)
|
|||||||
|
|
||||||
int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
|
int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
int err;
|
|
||||||
|
|
||||||
err = kvm_mips_callbacks->vcpu_init(vcpu);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
hrtimer_init(&vcpu->arch.comparecount_timer, CLOCK_MONOTONIC,
|
|
||||||
HRTIMER_MODE_REL);
|
|
||||||
vcpu->arch.comparecount_timer.function = kvm_mips_comparecount_wakeup;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu)
|
void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
kvm_mips_callbacks->vcpu_uninit(vcpu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
|
int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user