Skip to content

Commit

Permalink
KVM: Hoist kvm_create_lapic() into kvm_vcpu_init()
Browse files Browse the repository at this point in the history
Move kvm_create_lapic() into kvm_vcpu_init(), rather than having svm
and vmx do it.  And make it return the error rather than a fairly
random -ENOMEM.

This also solves the problem that neither svm.c nor vmx.c actually
handles the error path properly.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Avi Kivity <avi@qumranet.com>
  • Loading branch information
Rusty Russell authored and Avi Kivity committed Jan 30, 2008
1 parent d589444 commit 76fafa5
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 13 deletions.
10 changes: 9 additions & 1 deletion drivers/kvm/kvm_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,14 +255,22 @@ int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id)
if (r < 0)
goto fail_free_pio_data;

if (irqchip_in_kernel(kvm)) {
r = kvm_create_lapic(vcpu);
if (r < 0)
goto fail_mmu_destroy;
}

return 0;

fail_mmu_destroy:
kvm_mmu_destroy(vcpu);
fail_free_pio_data:
free_page((unsigned long)vcpu->pio_data);
fail_free_run:
free_page((unsigned long)vcpu->run);
fail:
return -ENOMEM;
return r;
}
EXPORT_SYMBOL_GPL(kvm_vcpu_init);

Expand Down
6 changes: 0 additions & 6 deletions drivers/kvm/svm.c
Original file line number Diff line number Diff line change
Expand Up @@ -588,12 +588,6 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
if (err)
goto free_svm;

if (irqchip_in_kernel(kvm)) {
err = kvm_create_lapic(&svm->vcpu);
if (err < 0)
goto free_svm;
}

page = alloc_page(GFP_KERNEL);
if (!page) {
err = -ENOMEM;
Expand Down
6 changes: 0 additions & 6 deletions drivers/kvm/vmx.c
Original file line number Diff line number Diff line change
Expand Up @@ -2431,12 +2431,6 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id)
if (err)
goto free_vcpu;

if (irqchip_in_kernel(kvm)) {
err = kvm_create_lapic(&vmx->vcpu);
if (err < 0)
goto free_vcpu;
}

vmx->guest_msrs = kmalloc(PAGE_SIZE, GFP_KERNEL);
if (!vmx->guest_msrs) {
err = -ENOMEM;
Expand Down

0 comments on commit 76fafa5

Please sign in to comment.