From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: Re: [PATCH] x86: Raise the hard VCPU count limit Date: Tue, 12 Jul 2011 16:49:38 +0300 Message-ID: <1310478579.2393.26.camel@sasha> References: <1310214320-12488-1-git-send-email-levinsasha928@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Avi Kivity , Ingo Molnar , Marcelo Tosatti , Pekka Enberg To: kvm@vger.kernel.org Return-path: Received: from mail-ww0-f44.google.com ([74.125.82.44]:59275 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753209Ab1GLNtq (ORCPT ); Tue, 12 Jul 2011 09:49:46 -0400 Received: by wwe5 with SMTP id 5so4958604wwe.1 for ; Tue, 12 Jul 2011 06:49:45 -0700 (PDT) In-Reply-To: <1310214320-12488-1-git-send-email-levinsasha928@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: On Sat, 2011-07-09 at 15:25 +0300, Sasha Levin wrote: > The patch raises the hard limit of VCPU count to 1024. > > This will allow developers to easily work on scalability > and will allow users to test high VCPU setups easily without > patching the kernel. > > To prevent possible issues with current setups, KVM_CAP_NR_VCPUS > now returns the recommended VCPU limit (which is still 64) - this > should be a safe value for everybody, while a new KVM_CAP_MAX_VCPUS > returns the hard limit which is now 1024. > > Cc: Avi Kivity > Cc: Ingo Molnar > Cc: Marcelo Tosatti > Cc: Pekka Enberg > Suggested-by: Pekka Enberg > Signed-off-by: Sasha Levin > --- Ping? > Documentation/virtual/kvm/api.txt | 11 +++++++++-- > arch/x86/include/asm/kvm_host.h | 3 ++- > arch/x86/kvm/x86.c | 3 +++ > include/linux/kvm.h | 3 ++- > 4 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt > index 42542eb..84883a0 100644 > --- a/Documentation/virtual/kvm/api.txt > +++ b/Documentation/virtual/kvm/api.txt > @@ -175,10 +175,17 @@ Parameters: vcpu id (apic id on x86) > Returns: vcpu fd on success, -1 on error > > This API adds a vcpu to a virtual machine. The vcpu id is a small integer > -in the range [0, max_vcpus). You can use KVM_CAP_NR_VCPUS of the > -KVM_CHECK_EXTENSION ioctl() to determine the value for max_vcpus at run-time. > +in the range [0, max_vcpus). > + > +The recommended max_vcpus value can be retrieved using the KVM_CAP_NR_VCPUS of > +the KVM_CHECK_EXTENSION ioctl() at run-time. > +The maximum possible value for max_vcpus can be retrieved using the > +KVM_CAP_MAX_VCPUS of the KVM_CHECK_EXTENSION ioctl() at run-time. > + > If the KVM_CAP_NR_VCPUS does not exist, you should assume that max_vcpus is 4 > cpus max. > +If the KVM_CAP_MAX_VCPUS does not exist, you should assume that max_vcpus is > +same as the value returned from KVM_CAP_NR_VCPUS. > > 4.8 KVM_GET_DIRTY_LOG (vm ioctl) > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index d2ac8e2..7db3e66 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -26,7 +26,8 @@ > #include > #include > > -#define KVM_MAX_VCPUS 64 > +#define KVM_MAX_VCPUS 1024 > +#define KVM_SOFT_MAX_VCPUS 64 > #define KVM_MEMORY_SLOTS 32 > /* memory slots that does not exposed to userspace */ > #define KVM_PRIVATE_MEM_SLOTS 4 > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 77c9d86..9766f46 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -2006,6 +2006,9 @@ int kvm_dev_ioctl_check_extension(long ext) > r = !kvm_x86_ops->cpu_has_accelerated_tpr(); > break; > case KVM_CAP_NR_VCPUS: > + r = KVM_SOFT_MAX_VCPUS; > + break; > + case KVM_CAP_MAX_VCPUS: > r = KVM_MAX_VCPUS; > break; > case KVM_CAP_NR_MEMSLOTS: > diff --git a/include/linux/kvm.h b/include/linux/kvm.h > index 55ef181..077c193 100644 > --- a/include/linux/kvm.h > +++ b/include/linux/kvm.h > @@ -457,7 +457,7 @@ struct kvm_ppc_pvinfo { > #define KVM_CAP_VAPIC 6 > #define KVM_CAP_EXT_CPUID 7 > #define KVM_CAP_CLOCKSOURCE 8 > -#define KVM_CAP_NR_VCPUS 9 /* returns max vcpus per vm */ > +#define KVM_CAP_NR_VCPUS 9 /* returns recommended max vcpus per vm */ > #define KVM_CAP_NR_MEMSLOTS 10 /* returns max memory slots per vm */ > #define KVM_CAP_PIT 11 > #define KVM_CAP_NOP_IO_DELAY 12 > @@ -544,6 +544,7 @@ struct kvm_ppc_pvinfo { > #define KVM_CAP_TSC_CONTROL 60 > #define KVM_CAP_GET_TSC_KHZ 61 > #define KVM_CAP_PPC_BOOKE_SREGS 62 > +#define KVM_CAP_MAX_VCPUS 63 /* returns max vcpus per vm */ > > #ifdef KVM_CAP_IRQ_ROUTING > -- Sasha.