diff options
Diffstat (limited to 'drivers/kvm/mmu.c')
-rw-r--r-- | drivers/kvm/mmu.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/drivers/kvm/mmu.c b/drivers/kvm/mmu.c index bdffe83b19e..790423c5f23 100644 --- a/drivers/kvm/mmu.c +++ b/drivers/kvm/mmu.c @@ -578,7 +578,7 @@ static int init_kvm_mmu(struct kvm_vcpu *vcpu) if (!is_paging(vcpu)) return nonpaging_init_context(vcpu); - else if (kvm_arch_ops->is_long_mode(vcpu)) + else if (is_long_mode(vcpu)) return paging64_init_context(vcpu); else if (is_pae(vcpu)) return paging32E_init_context(vcpu); @@ -639,28 +639,22 @@ error_1: return -ENOMEM; } -int kvm_mmu_init(struct kvm_vcpu *vcpu) +int kvm_mmu_create(struct kvm_vcpu *vcpu) { - int r; - ASSERT(vcpu); ASSERT(!VALID_PAGE(vcpu->mmu.root_hpa)); ASSERT(list_empty(&vcpu->free_pages)); - r = alloc_mmu_pages(vcpu); - if (r) - goto out; - - r = init_kvm_mmu(vcpu); - if (r) - goto out_free_pages; + return alloc_mmu_pages(vcpu); +} - return 0; +int kvm_mmu_setup(struct kvm_vcpu *vcpu) +{ + ASSERT(vcpu); + ASSERT(!VALID_PAGE(vcpu->mmu.root_hpa)); + ASSERT(!list_empty(&vcpu->free_pages)); -out_free_pages: - free_mmu_pages(vcpu); -out: - return r; + return init_kvm_mmu(vcpu); } void kvm_mmu_destroy(struct kvm_vcpu *vcpu) |