aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2007-06-07 19:11:53 +0300
committerAvi Kivity <avi@qumranet.com>2007-07-16 12:05:46 +0300
commit39c3b86e5c193e09f69f0e99c93600a4999ffc60 (patch)
tree94272c98789224f53d4f4f19587a08d95103f837 /drivers/kvm
parent72d6e5a08a8ba2105b3f36e32285e8fbfbed1f71 (diff)
downloadkernel_samsung_smdk4412-39c3b86e5c193e09f69f0e99c93600a4999ffc60.zip
kernel_samsung_smdk4412-39c3b86e5c193e09f69f0e99c93600a4999ffc60.tar.gz
kernel_samsung_smdk4412-39c3b86e5c193e09f69f0e99c93600a4999ffc60.tar.bz2
KVM: Keep an upper bound of initialized vcpus
That way, we don't need to loop for KVM_MAX_VCPUS for a single vcpu vm. Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm')
-rw-r--r--drivers/kvm/kvm.h1
-rw-r--r--drivers/kvm/kvm_main.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index d49b16c..528a56b 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -379,6 +379,7 @@ struct kvm {
struct list_head active_mmu_pages;
int n_free_mmu_pages;
struct hlist_head mmu_page_hash[KVM_NUM_MMU_PAGES];
+ int nvcpus;
struct kvm_vcpu vcpus[KVM_MAX_VCPUS];
int memory_config_version;
int busy;
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 5564169..4e1a017 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -2391,6 +2391,11 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, int n)
if (r < 0)
goto out_free_vcpus;
+ spin_lock(&kvm_lock);
+ if (n >= kvm->nvcpus)
+ kvm->nvcpus = n + 1;
+ spin_unlock(&kvm_lock);
+
return r;
out_free_vcpus: