]> Pileus Git - ~andy/linux/blobdiff - arch/powerpc/kvm/44x.c
KVM: PPC: Introduce shared page
[~andy/linux] / arch / powerpc / kvm / 44x.c
index 73c0a3f64ed1e9587b5776ae3c198af94edc9a97..e7b1f3fca5dc4bb615e33a8e9a860808b263acf4 100644 (file)
@@ -123,8 +123,14 @@ struct kvm_vcpu *kvmppc_core_vcpu_create(struct kvm *kvm, unsigned int id)
        if (err)
                goto free_vcpu;
 
+       vcpu->arch.shared = (void*)__get_free_page(GFP_KERNEL|__GFP_ZERO);
+       if (!vcpu->arch.shared)
+               goto uninit_vcpu;
+
        return vcpu;
 
+uninit_vcpu:
+       kvm_vcpu_uninit(vcpu);
 free_vcpu:
        kmem_cache_free(kvm_vcpu_cache, vcpu_44x);
 out:
@@ -135,6 +141,7 @@ void kvmppc_core_vcpu_free(struct kvm_vcpu *vcpu)
 {
        struct kvmppc_vcpu_44x *vcpu_44x = to_44x(vcpu);
 
+       free_page((unsigned long)vcpu->arch.shared);
        kvm_vcpu_uninit(vcpu);
        kmem_cache_free(kvm_vcpu_cache, vcpu_44x);
 }