KVM: Use common function for VCPU lookup by id
Let's reuse the new common function for VPCU lookup by id. Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: Dominik Dingel <dingel@linux.vnet.ibm.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> [split out the new function into a separate patch]
This commit is contained in:
parent
bb11c6c965
commit
e09fefdeeb
@ -308,16 +308,10 @@ static void kvmppc_dump_regs(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
static struct kvm_vcpu *kvmppc_find_vcpu(struct kvm *kvm, int id)
|
static struct kvm_vcpu *kvmppc_find_vcpu(struct kvm *kvm, int id)
|
||||||
{
|
{
|
||||||
int r;
|
struct kvm_vcpu *ret;
|
||||||
struct kvm_vcpu *v, *ret = NULL;
|
|
||||||
|
|
||||||
mutex_lock(&kvm->lock);
|
mutex_lock(&kvm->lock);
|
||||||
kvm_for_each_vcpu(r, v, kvm) {
|
ret = kvm_get_vcpu_by_id(kvm, id);
|
||||||
if (v->vcpu_id == id) {
|
|
||||||
ret = v;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mutex_unlock(&kvm->lock);
|
mutex_unlock(&kvm->lock);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -155,10 +155,8 @@ static int __diag_time_slice_end(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
static int __diag_time_slice_end_directed(struct kvm_vcpu *vcpu)
|
static int __diag_time_slice_end_directed(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
struct kvm *kvm = vcpu->kvm;
|
|
||||||
struct kvm_vcpu *tcpu;
|
struct kvm_vcpu *tcpu;
|
||||||
int tid;
|
int tid;
|
||||||
int i;
|
|
||||||
|
|
||||||
tid = vcpu->run->s.regs.gprs[(vcpu->arch.sie_block->ipa & 0xf0) >> 4];
|
tid = vcpu->run->s.regs.gprs[(vcpu->arch.sie_block->ipa & 0xf0) >> 4];
|
||||||
vcpu->stat.diagnose_9c++;
|
vcpu->stat.diagnose_9c++;
|
||||||
@ -167,12 +165,9 @@ static int __diag_time_slice_end_directed(struct kvm_vcpu *vcpu)
|
|||||||
if (tid == vcpu->vcpu_id)
|
if (tid == vcpu->vcpu_id)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
kvm_for_each_vcpu(i, tcpu, kvm)
|
tcpu = kvm_get_vcpu_by_id(vcpu->kvm, tid);
|
||||||
if (tcpu->vcpu_id == tid) {
|
if (tcpu)
|
||||||
kvm_vcpu_yield_to(tcpu);
|
kvm_vcpu_yield_to(tcpu);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2257,7 +2257,7 @@ static int create_vcpu_fd(struct kvm_vcpu *vcpu)
|
|||||||
static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
|
static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
struct kvm_vcpu *vcpu, *v;
|
struct kvm_vcpu *vcpu;
|
||||||
|
|
||||||
if (id >= KVM_MAX_VCPUS)
|
if (id >= KVM_MAX_VCPUS)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -2281,12 +2281,10 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id)
|
|||||||
r = -EINVAL;
|
r = -EINVAL;
|
||||||
goto unlock_vcpu_destroy;
|
goto unlock_vcpu_destroy;
|
||||||
}
|
}
|
||||||
|
if (kvm_get_vcpu_by_id(kvm, id)) {
|
||||||
kvm_for_each_vcpu(r, v, kvm)
|
r = -EEXIST;
|
||||||
if (v->vcpu_id == id) {
|
goto unlock_vcpu_destroy;
|
||||||
r = -EEXIST;
|
}
|
||||||
goto unlock_vcpu_destroy;
|
|
||||||
}
|
|
||||||
|
|
||||||
BUG_ON(kvm->vcpus[atomic_read(&kvm->online_vcpus)]);
|
BUG_ON(kvm->vcpus[atomic_read(&kvm->online_vcpus)]);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user