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 <avi@xxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxx> > Cc: Marcelo Tosatti <mtosatti@xxxxxxxxxx> > Cc: Pekka Enberg <penberg@xxxxxxxxxx> > Suggested-by: Pekka Enberg <penberg@xxxxxxxxxxxxxx> > Signed-off-by: Sasha Levin <levinsasha928@xxxxxxxxx> > --- 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 <asm/mtrr.h> > #include <asm/msr-index.h> > > -#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. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html