KVM: Add kvm_vcpu_get_idx to get vcpu index in kvm->vcpus
authorChristoffer Dall <cdall@linaro.org>
Mon, 8 May 2017 18:38:40 +0000 (20:38 +0200)
committerChristoffer Dall <cdall@linaro.org>
Tue, 9 May 2017 10:19:14 +0000 (12:19 +0200)
There are occasional needs to use the index of vcpu in the kvm->vcpus
array to map something related to a VCPU.  For example, unlike the
vcpu->vcpu_id, the vcpu index is guaranteed to not be sparse across all
vcpus which is useful when allocating a memory area for each vcpu.

Signed-off-by: Christoffer Dall <cdall@linaro.org>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
include/linux/kvm_host.h

index 2c14ad9..12eb26d 100644 (file)
@@ -490,6 +490,17 @@ static inline struct kvm_vcpu *kvm_get_vcpu_by_id(struct kvm *kvm, int id)
        return NULL;
 }
 
+static inline int kvm_vcpu_get_idx(struct kvm_vcpu *vcpu)
+{
+       struct kvm_vcpu *tmp;
+       int idx;
+
+       kvm_for_each_vcpu(idx, tmp, vcpu->kvm)
+               if (tmp == vcpu)
+                       return idx;
+       BUG();
+}
+
 #define kvm_for_each_memslot(memslot, slots)   \
        for (memslot = &slots->memslots[0];     \
              memslot < slots->memslots + KVM_MEM_SLOTS_NUM && memslot->npages;\