Message ID | 146357953667.8807.5432652213311565530.stgit@bahia.huguette.org |
---|---|
State | New |
Headers | show |
On 18 May 2016 at 14:52, Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > Some PowerPC systems can already provide more than 255 hardware threads. > Igor also posted a patch recently, to increase the the maxcpus limit to > 288 for x86 targets. > > This patch bumps the limit to 1024: > - 1024 is already the limit for PowerPC KVM in several distros > - it has no visible overhead in top > - the limit itself has no effect on hot paths > > We only do that for pseries at the moment and keep a 255 limit for the > ARM Virtual Machine. > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > --- > v2: - updated changelog > - keep 255 limit in hw/arm/virt.c > --- > hw/arm/virt.c | 2 +- > include/sysemu/sysemu.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 56d35c7716e7..438e09c7a57d 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1358,7 +1358,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) > * it later in machvirt_init, where we have more information about the > * configuration of the particular instance. > */ > - mc->max_cpus = MAX_CPUMASK_BITS; > + mc->max_cpus = 255; This change makes the code disagree with the comment immediately above it. As the comment says, we set max_cpus to the maximum QEMU supports, and then dynamically check it later when we know whether we have a GICv2 or GICv3 (which is what puts the limit on number of CPUs for this board). So I think the change is not needed. > mc->has_dynamic_sysbus = true; > mc->block_default_type = IF_VIRTIO; > mc->no_cdrom = 1; > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > index 38fb3cad35e1..89d742caa477 100644 > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -185,7 +185,7 @@ extern int mem_prealloc; > * > * Note that cpu->get_arch_id() may be larger than MAX_CPUMASK_BITS. > */ > -#define MAX_CPUMASK_BITS 255 > +#define MAX_CPUMASK_BITS 1024 > > #define MAX_OPTION_ROMS 16 > typedef struct QEMUOptionRom { thanks -- PMM
On Wed, 18 May 2016 16:31:31 +0100 Peter Maydell <peter.maydell@linaro.org> wrote: > On 18 May 2016 at 14:52, Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > Some PowerPC systems can already provide more than 255 hardware threads. > > Igor also posted a patch recently, to increase the the maxcpus limit to > > 288 for x86 targets. > > > > This patch bumps the limit to 1024: > > - 1024 is already the limit for PowerPC KVM in several distros > > - it has no visible overhead in top > > - the limit itself has no effect on hot paths > > > > We only do that for pseries at the moment and keep a 255 limit for the > > ARM Virtual Machine. > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > --- > > v2: - updated changelog > > - keep 255 limit in hw/arm/virt.c > > --- > > hw/arm/virt.c | 2 +- > > include/sysemu/sysemu.h | 2 +- > > 2 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > > index 56d35c7716e7..438e09c7a57d 100644 > > --- a/hw/arm/virt.c > > +++ b/hw/arm/virt.c > > @@ -1358,7 +1358,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) > > * it later in machvirt_init, where we have more information about the > > * configuration of the particular instance. > > */ > > - mc->max_cpus = MAX_CPUMASK_BITS; > > + mc->max_cpus = 255; > > This change makes the code disagree with the comment immediately > above it. As the comment says, we set max_cpus to the maximum > QEMU supports, and then dynamically check it later when we know > whether we have a GICv2 or GICv3 (which is what puts the limit > on number of CPUs for this board). So I think the change is > not needed. > Thank you Peter for the clarification. I'll mention that in the changelog in v3. > > mc->has_dynamic_sysbus = true; > > mc->block_default_type = IF_VIRTIO; > > mc->no_cdrom = 1; > > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > > index 38fb3cad35e1..89d742caa477 100644 > > --- a/include/sysemu/sysemu.h > > +++ b/include/sysemu/sysemu.h > > @@ -185,7 +185,7 @@ extern int mem_prealloc; > > * > > * Note that cpu->get_arch_id() may be larger than MAX_CPUMASK_BITS. > > */ > > -#define MAX_CPUMASK_BITS 255 > > +#define MAX_CPUMASK_BITS 1024 > > > > #define MAX_OPTION_ROMS 16 > > typedef struct QEMUOptionRom { > > thanks > -- PMM >
diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 56d35c7716e7..438e09c7a57d 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1358,7 +1358,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) * it later in machvirt_init, where we have more information about the * configuration of the particular instance. */ - mc->max_cpus = MAX_CPUMASK_BITS; + mc->max_cpus = 255; mc->has_dynamic_sysbus = true; mc->block_default_type = IF_VIRTIO; mc->no_cdrom = 1; diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 38fb3cad35e1..89d742caa477 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -185,7 +185,7 @@ extern int mem_prealloc; * * Note that cpu->get_arch_id() may be larger than MAX_CPUMASK_BITS. */ -#define MAX_CPUMASK_BITS 255 +#define MAX_CPUMASK_BITS 1024 #define MAX_OPTION_ROMS 16 typedef struct QEMUOptionRom {
Some PowerPC systems can already provide more than 255 hardware threads. Igor also posted a patch recently, to increase the the maxcpus limit to 288 for x86 targets. This patch bumps the limit to 1024: - 1024 is already the limit for PowerPC KVM in several distros - it has no visible overhead in top - the limit itself has no effect on hot paths We only do that for pseries at the moment and keep a 255 limit for the ARM Virtual Machine. Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> --- v2: - updated changelog - keep 255 limit in hw/arm/virt.c --- hw/arm/virt.c | 2 +- include/sysemu/sysemu.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)