diff mbox

[3/3] KVM: use KVM_CAP_MAX_VCPU_ID

Message ID 146424974323.5666.5471538288045048119.stgit@bahia.huguette.org
State New
Headers show

Commit Message

Greg Kurz May 26, 2016, 8:02 a.m. UTC
As stated in linux/Documentation/virtual/kvm/api.txt:

The maximum possible value for max_vcpu_id can be retrieved using the
KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.

If the KVM_CAP_MAX_VCPU_ID does not exist, you should assume that
max_vcpu_id is the same as the value returned from KVM_CAP_MAX_VCPUS.

Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
---
 kvm-all.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

David Gibson May 27, 2016, 3:58 a.m. UTC | #1
On Thu, May 26, 2016 at 10:02:23AM +0200, Greg Kurz wrote:
> As stated in linux/Documentation/virtual/kvm/api.txt:
> 
> The maximum possible value for max_vcpu_id can be retrieved using the
> KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
> 
> If the KVM_CAP_MAX_VCPU_ID does not exist, you should assume that
> max_vcpu_id is the same as the value returned from KVM_CAP_MAX_VCPUS.
> 
> Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  kvm-all.c |    8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/kvm-all.c b/kvm-all.c
> index e56f38527815..e74e0c6e2352 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -1459,10 +1459,16 @@ static int kvm_max_vcpus(KVMState *s)
>      return (ret) ? ret : kvm_recommended_vcpus(s);
>  }
>  
> +static int kvm_max_vcpu_id(KVMState *s)
> +{
> +    int ret = kvm_check_extension(s, KVM_CAP_MAX_VCPU_ID);
> +    return (ret) ? ret : kvm_max_vcpus(s);
> +}
> +
>  bool kvm_vcpu_id_is_valid(int vcpu_id)
>  {
>      KVMState *s = KVM_STATE(current_machine->accelerator);
> -    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpus(s);
> +    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpu_id(s);
>  }
>  
>  static int kvm_init(MachineState *ms)
>
Greg Kurz May 27, 2016, 11:16 a.m. UTC | #2
On Fri, 27 May 2016 13:58:28 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:

> On Thu, May 26, 2016 at 10:02:23AM +0200, Greg Kurz wrote:
> > As stated in linux/Documentation/virtual/kvm/api.txt:
> > 
> > The maximum possible value for max_vcpu_id can be retrieved using the
> > KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
> > 
> > If the KVM_CAP_MAX_VCPU_ID does not exist, you should assume that
> > max_vcpu_id is the same as the value returned from KVM_CAP_MAX_VCPUS.
> > 
> > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>  
> 
> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> 

Paolo,

FYI Patch 1/3 was in David's pull request earlier today. It is now upstream.

You may now apply 2/3 and 3/3.

Thanks !

--
Greg

> > ---
> >  kvm-all.c |    8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> > 
> > diff --git a/kvm-all.c b/kvm-all.c
> > index e56f38527815..e74e0c6e2352 100644
> > --- a/kvm-all.c
> > +++ b/kvm-all.c
> > @@ -1459,10 +1459,16 @@ static int kvm_max_vcpus(KVMState *s)
> >      return (ret) ? ret : kvm_recommended_vcpus(s);
> >  }
> >  
> > +static int kvm_max_vcpu_id(KVMState *s)
> > +{
> > +    int ret = kvm_check_extension(s, KVM_CAP_MAX_VCPU_ID);
> > +    return (ret) ? ret : kvm_max_vcpus(s);
> > +}
> > +
> >  bool kvm_vcpu_id_is_valid(int vcpu_id)
> >  {
> >      KVMState *s = KVM_STATE(current_machine->accelerator);
> > -    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpus(s);
> > +    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpu_id(s);
> >  }
> >  
> >  static int kvm_init(MachineState *ms)
> >   
>
Greg Kurz June 7, 2016, 8:42 a.m. UTC | #3
On Fri, 27 May 2016 13:16:49 +0200
Greg Kurz <gkurz@linux.vnet.ibm.com> wrote:

> On Fri, 27 May 2016 13:58:28 +1000
> David Gibson <david@gibson.dropbear.id.au> wrote:
> 
> > On Thu, May 26, 2016 at 10:02:23AM +0200, Greg Kurz wrote:  
> > > As stated in linux/Documentation/virtual/kvm/api.txt:
> > > 
> > > The maximum possible value for max_vcpu_id can be retrieved using the
> > > KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
> > > 
> > > If the KVM_CAP_MAX_VCPU_ID does not exist, you should assume that
> > > max_vcpu_id is the same as the value returned from KVM_CAP_MAX_VCPUS.
> > > 
> > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>    
> > 
> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> >   
> 
> Paolo,
> 
> FYI Patch 1/3 was in David's pull request earlier today. It is now upstream.
> 
> You may now apply 2/3 and 3/3.
> 
> Thanks !
> 
> --
> Greg
> 

Ping ?

> > > ---
> > >  kvm-all.c |    8 +++++++-
> > >  1 file changed, 7 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/kvm-all.c b/kvm-all.c
> > > index e56f38527815..e74e0c6e2352 100644
> > > --- a/kvm-all.c
> > > +++ b/kvm-all.c
> > > @@ -1459,10 +1459,16 @@ static int kvm_max_vcpus(KVMState *s)
> > >      return (ret) ? ret : kvm_recommended_vcpus(s);
> > >  }
> > >  
> > > +static int kvm_max_vcpu_id(KVMState *s)
> > > +{
> > > +    int ret = kvm_check_extension(s, KVM_CAP_MAX_VCPU_ID);
> > > +    return (ret) ? ret : kvm_max_vcpus(s);
> > > +}
> > > +
> > >  bool kvm_vcpu_id_is_valid(int vcpu_id)
> > >  {
> > >      KVMState *s = KVM_STATE(current_machine->accelerator);
> > > -    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpus(s);
> > > +    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpu_id(s);
> > >  }
> > >  
> > >  static int kvm_init(MachineState *ms)
> > >     
> >   
> 
>
Greg Kurz June 13, 2016, 8:42 a.m. UTC | #4
On Fri, 27 May 2016 13:16:49 +0200
Greg Kurz <gkurz@linux.vnet.ibm.com> wrote:

> On Fri, 27 May 2016 13:58:28 +1000
> David Gibson <david@gibson.dropbear.id.au> wrote:
> 
> > On Thu, May 26, 2016 at 10:02:23AM +0200, Greg Kurz wrote:  
> > > As stated in linux/Documentation/virtual/kvm/api.txt:
> > > 
> > > The maximum possible value for max_vcpu_id can be retrieved using the
> > > KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
> > > 
> > > If the KVM_CAP_MAX_VCPU_ID does not exist, you should assume that
> > > max_vcpu_id is the same as the value returned from KVM_CAP_MAX_VCPUS.
> > > 
> > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>    
> > 
> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> >   
> 
> Paolo,
> 
> FYI Patch 1/3 was in David's pull request earlier today. It is now upstream.
> 
> You may now apply 2/3 and 3/3.
> 
> Thanks !
> 

Hi Paolo,

Just a friendly reminder. Without this patch, we cannot create more than
128 single-threaded vCPUs on POWER8 if the host has unsplit cores.

Thanks !

--
Greg

> --
> Greg
> 
> > > ---
> > >  kvm-all.c |    8 +++++++-
> > >  1 file changed, 7 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/kvm-all.c b/kvm-all.c
> > > index e56f38527815..e74e0c6e2352 100644
> > > --- a/kvm-all.c
> > > +++ b/kvm-all.c
> > > @@ -1459,10 +1459,16 @@ static int kvm_max_vcpus(KVMState *s)
> > >      return (ret) ? ret : kvm_recommended_vcpus(s);
> > >  }
> > >  
> > > +static int kvm_max_vcpu_id(KVMState *s)
> > > +{
> > > +    int ret = kvm_check_extension(s, KVM_CAP_MAX_VCPU_ID);
> > > +    return (ret) ? ret : kvm_max_vcpus(s);
> > > +}
> > > +
> > >  bool kvm_vcpu_id_is_valid(int vcpu_id)
> > >  {
> > >      KVMState *s = KVM_STATE(current_machine->accelerator);
> > > -    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpus(s);
> > > +    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpu_id(s);
> > >  }
> > >  
> > >  static int kvm_init(MachineState *ms)
> > >     
> >   
> 
>
Paolo Bonzini June 13, 2016, 11:25 a.m. UTC | #5
On 13/06/2016 10:42, Greg Kurz wrote:
> On Fri, 27 May 2016 13:16:49 +0200
> Greg Kurz <gkurz@linux.vnet.ibm.com> wrote:
> 
>> On Fri, 27 May 2016 13:58:28 +1000
>> David Gibson <david@gibson.dropbear.id.au> wrote:
>>
>>> On Thu, May 26, 2016 at 10:02:23AM +0200, Greg Kurz wrote:  
>>>> As stated in linux/Documentation/virtual/kvm/api.txt:
>>>>
>>>> The maximum possible value for max_vcpu_id can be retrieved using the
>>>> KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
>>>>
>>>> If the KVM_CAP_MAX_VCPU_ID does not exist, you should assume that
>>>> max_vcpu_id is the same as the value returned from KVM_CAP_MAX_VCPUS.
>>>>
>>>> Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>    
>>>
>>> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
>>>   
>>
>> Paolo,
>>
>> FYI Patch 1/3 was in David's pull request earlier today. It is now upstream.
>>
>> You may now apply 2/3 and 3/3.
>>
>> Thanks !
>>
> 
> Hi Paolo,
> 
> Just a friendly reminder. Without this patch, we cannot create more than
> 128 single-threaded vCPUs on POWER8 if the host has unsplit cores.

Thanks!

Paolo
diff mbox

Patch

diff --git a/kvm-all.c b/kvm-all.c
index e56f38527815..e74e0c6e2352 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1459,10 +1459,16 @@  static int kvm_max_vcpus(KVMState *s)
     return (ret) ? ret : kvm_recommended_vcpus(s);
 }
 
+static int kvm_max_vcpu_id(KVMState *s)
+{
+    int ret = kvm_check_extension(s, KVM_CAP_MAX_VCPU_ID);
+    return (ret) ? ret : kvm_max_vcpus(s);
+}
+
 bool kvm_vcpu_id_is_valid(int vcpu_id)
 {
     KVMState *s = KVM_STATE(current_machine->accelerator);
-    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpus(s);
+    return vcpu_id >= 0 && vcpu_id < kvm_max_vcpu_id(s);
 }
 
 static int kvm_init(MachineState *ms)