Loading drivers/kvm/kvm_main.c +51 −51 Original line number Diff line number Diff line Loading @@ -598,57 +598,6 @@ void fx_init(struct kvm_vcpu *vcpu) } EXPORT_SYMBOL_GPL(fx_init); /* * Creates some virtual cpus. Good luck creating more than one. */ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n) { int r; struct kvm_vcpu *vcpu; r = -EINVAL; if (!valid_vcpu(n)) goto out; vcpu = &kvm->vcpus[n]; mutex_lock(&vcpu->mutex); if (vcpu->vmcs) { mutex_unlock(&vcpu->mutex); return -EEXIST; } vcpu->host_fx_image = (char*)ALIGN((hva_t)vcpu->fx_buf, FX_IMAGE_ALIGN); vcpu->guest_fx_image = vcpu->host_fx_image + FX_IMAGE_SIZE; r = kvm_arch_ops->vcpu_create(vcpu); if (r < 0) goto out_free_vcpus; r = kvm_mmu_create(vcpu); if (r < 0) goto out_free_vcpus; kvm_arch_ops->vcpu_load(vcpu); r = kvm_mmu_setup(vcpu); if (r >= 0) r = kvm_arch_ops->vcpu_setup(vcpu); vcpu_put(vcpu); if (r < 0) goto out_free_vcpus; return 0; out_free_vcpus: kvm_free_vcpu(vcpu); mutex_unlock(&vcpu->mutex); out: return r; } /* * Allocate some memory and give it an address in the guest physical address * space. Loading Loading @@ -1964,6 +1913,57 @@ static int kvm_vm_ioctl_debug_guest(struct kvm *kvm, return r; } /* * Creates some virtual cpus. Good luck creating more than one. */ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n) { int r; struct kvm_vcpu *vcpu; r = -EINVAL; if (!valid_vcpu(n)) goto out; vcpu = &kvm->vcpus[n]; mutex_lock(&vcpu->mutex); if (vcpu->vmcs) { mutex_unlock(&vcpu->mutex); return -EEXIST; } vcpu->host_fx_image = (char*)ALIGN((hva_t)vcpu->fx_buf, FX_IMAGE_ALIGN); vcpu->guest_fx_image = vcpu->host_fx_image + FX_IMAGE_SIZE; r = kvm_arch_ops->vcpu_create(vcpu); if (r < 0) goto out_free_vcpus; r = kvm_mmu_create(vcpu); if (r < 0) goto out_free_vcpus; kvm_arch_ops->vcpu_load(vcpu); r = kvm_mmu_setup(vcpu); if (r >= 0) r = kvm_arch_ops->vcpu_setup(vcpu); vcpu_put(vcpu); if (r < 0) goto out_free_vcpus; return 0; out_free_vcpus: kvm_free_vcpu(vcpu); mutex_unlock(&vcpu->mutex); out: return r; } static long kvm_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) { Loading Loading
drivers/kvm/kvm_main.c +51 −51 Original line number Diff line number Diff line Loading @@ -598,57 +598,6 @@ void fx_init(struct kvm_vcpu *vcpu) } EXPORT_SYMBOL_GPL(fx_init); /* * Creates some virtual cpus. Good luck creating more than one. */ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n) { int r; struct kvm_vcpu *vcpu; r = -EINVAL; if (!valid_vcpu(n)) goto out; vcpu = &kvm->vcpus[n]; mutex_lock(&vcpu->mutex); if (vcpu->vmcs) { mutex_unlock(&vcpu->mutex); return -EEXIST; } vcpu->host_fx_image = (char*)ALIGN((hva_t)vcpu->fx_buf, FX_IMAGE_ALIGN); vcpu->guest_fx_image = vcpu->host_fx_image + FX_IMAGE_SIZE; r = kvm_arch_ops->vcpu_create(vcpu); if (r < 0) goto out_free_vcpus; r = kvm_mmu_create(vcpu); if (r < 0) goto out_free_vcpus; kvm_arch_ops->vcpu_load(vcpu); r = kvm_mmu_setup(vcpu); if (r >= 0) r = kvm_arch_ops->vcpu_setup(vcpu); vcpu_put(vcpu); if (r < 0) goto out_free_vcpus; return 0; out_free_vcpus: kvm_free_vcpu(vcpu); mutex_unlock(&vcpu->mutex); out: return r; } /* * Allocate some memory and give it an address in the guest physical address * space. Loading Loading @@ -1964,6 +1913,57 @@ static int kvm_vm_ioctl_debug_guest(struct kvm *kvm, return r; } /* * Creates some virtual cpus. Good luck creating more than one. */ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n) { int r; struct kvm_vcpu *vcpu; r = -EINVAL; if (!valid_vcpu(n)) goto out; vcpu = &kvm->vcpus[n]; mutex_lock(&vcpu->mutex); if (vcpu->vmcs) { mutex_unlock(&vcpu->mutex); return -EEXIST; } vcpu->host_fx_image = (char*)ALIGN((hva_t)vcpu->fx_buf, FX_IMAGE_ALIGN); vcpu->guest_fx_image = vcpu->host_fx_image + FX_IMAGE_SIZE; r = kvm_arch_ops->vcpu_create(vcpu); if (r < 0) goto out_free_vcpus; r = kvm_mmu_create(vcpu); if (r < 0) goto out_free_vcpus; kvm_arch_ops->vcpu_load(vcpu); r = kvm_mmu_setup(vcpu); if (r >= 0) r = kvm_arch_ops->vcpu_setup(vcpu); vcpu_put(vcpu); if (r < 0) goto out_free_vcpus; return 0; out_free_vcpus: kvm_free_vcpu(vcpu); mutex_unlock(&vcpu->mutex); out: return r; } static long kvm_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) { Loading