All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] smpboot: correctly update number of booted cores
@ 2018-02-21 20:50 Samuel Neves
  2018-02-22  8:07 ` Dou Liyang
  2018-02-23  8:29 ` [tip:x86/urgent] x86/topology: Update the 'cpu cores' field in /proc/cpuinfo correctly across CPU hotplug operations tip-bot for Samuel Neves
  0 siblings, 2 replies; 3+ messages in thread
From: Samuel Neves @ 2018-02-21 20:50 UTC (permalink / raw)
  To: tglx, mingo, hpa, x86, jgross, douly.fnst, luto, prarit, ak,
	vkuznets, linux-kernel
  Cc: Samuel Neves

Without this fix, /proc/cpuinfo will display an incorrect amount
of CPU cores, after bringing them offline and online again, as
exemplified below:

$ cat /proc/cpuinfo | grep cores
cpu cores	: 4
cpu cores	: 8
cpu cores	: 8
cpu cores	: 20
cpu cores	: 4
cpu cores	: 3
cpu cores	: 2
cpu cores	: 2

This patch fixes this by always zeroing the booted_cores variable
upon turning off a logical CPU.

Signed-off-by: Samuel Neves <sneves@dei.uc.pt>
---
 arch/x86/kernel/smpboot.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 9eee25d07586..ff99e2b6fc54 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1437,6 +1437,7 @@ static void remove_siblinginfo(int cpu)
 	cpumask_clear(topology_sibling_cpumask(cpu));
 	cpumask_clear(topology_core_cpumask(cpu));
 	c->cpu_core_id = 0;
+	c->booted_cores = 0;
 	cpumask_clear_cpu(cpu, cpu_sibling_setup_mask);
 	recompute_smt_state();
 }
-- 
2.14.3

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] smpboot: correctly update number of booted cores
  2018-02-21 20:50 [PATCH] smpboot: correctly update number of booted cores Samuel Neves
@ 2018-02-22  8:07 ` Dou Liyang
  2018-02-23  8:29 ` [tip:x86/urgent] x86/topology: Update the 'cpu cores' field in /proc/cpuinfo correctly across CPU hotplug operations tip-bot for Samuel Neves
  1 sibling, 0 replies; 3+ messages in thread
From: Dou Liyang @ 2018-02-22  8:07 UTC (permalink / raw)
  To: Samuel Neves, tglx, mingo, hpa, x86, jgross, luto, prarit, ak,
	vkuznets, linux-kernel



At 02/22/2018 04:50 AM, Samuel Neves wrote:
> Without this fix, /proc/cpuinfo will display an incorrect amount
> of CPU cores, after bringing them offline and online again, as
> exemplified below:
> 
> $ cat /proc/cpuinfo | grep cores
> cpu cores	: 4
> cpu cores	: 8
> cpu cores	: 8
> cpu cores	: 20
> cpu cores	: 4
> cpu cores	: 3
> cpu cores	: 2
> cpu cores	: 2
> 
> This patch fixes this by always zeroing the booted_cores variable
> upon turning off a logical CPU.
> 
> Signed-off-by: Samuel Neves <sneves@dei.uc.pt>

Yes, tested it in Qemu with 15 hot-pluggable CPUs, like below
   ...
   -smp 1,maxcpus=16,sockets=2,cores=4,threads=2
   ...

When a new CPU bringups a new core, for each core in package, Linux 
increments the booted_cores for this new cpu in set_cpu_sibling_map().
Due to the uncleared booted_cores, this incorrect number of CPU cores
will be shown.

Tested-by: Dou Liyang <douly.fnst@cn.fujitsu.com>

> ---
>   arch/x86/kernel/smpboot.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
> index 9eee25d07586..ff99e2b6fc54 100644
> --- a/arch/x86/kernel/smpboot.c
> +++ b/arch/x86/kernel/smpboot.c
> @@ -1437,6 +1437,7 @@ static void remove_siblinginfo(int cpu)
>   	cpumask_clear(topology_sibling_cpumask(cpu));
>   	cpumask_clear(topology_core_cpumask(cpu));
>   	c->cpu_core_id = 0;
> +	c->booted_cores = 0;
>   	cpumask_clear_cpu(cpu, cpu_sibling_setup_mask);
>   	recompute_smt_state();
>   }
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [tip:x86/urgent] x86/topology: Update the 'cpu cores' field in /proc/cpuinfo correctly across CPU hotplug operations
  2018-02-21 20:50 [PATCH] smpboot: correctly update number of booted cores Samuel Neves
  2018-02-22  8:07 ` Dou Liyang
@ 2018-02-23  8:29 ` tip-bot for Samuel Neves
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Samuel Neves @ 2018-02-23  8:29 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: douly.fnst, sneves, peterz, mingo, hpa, torvalds, linux-kernel, tglx

Commit-ID:  4596749339e06dc7a424fc08a15eded850ed78b7
Gitweb:     https://git.kernel.org/tip/4596749339e06dc7a424fc08a15eded850ed78b7
Author:     Samuel Neves <sneves@dei.uc.pt>
AuthorDate: Wed, 21 Feb 2018 20:50:36 +0000
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 23 Feb 2018 08:47:47 +0100

x86/topology: Update the 'cpu cores' field in /proc/cpuinfo correctly across CPU hotplug operations

Without this fix, /proc/cpuinfo will display an incorrect amount
of CPU cores, after bringing them offline and online again, as
exemplified below:

  $ cat /proc/cpuinfo | grep cores
  cpu cores	: 4
  cpu cores	: 8
  cpu cores	: 8
  cpu cores	: 20
  cpu cores	: 4
  cpu cores	: 3
  cpu cores	: 2
  cpu cores	: 2

This patch fixes this by always zeroing the booted_cores variable
upon turning off a logical CPU.

Tested-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
Signed-off-by: Samuel Neves <sneves@dei.uc.pt>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: jgross@suse.com
Cc: luto@kernel.org
Cc: prarit@redhat.com
Cc: vkuznets@redhat.com
Link: http://lkml.kernel.org/r/20180221205036.5244-1-sneves@dei.uc.pt
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/smpboot.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 9eee25d07586..ff99e2b6fc54 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1437,6 +1437,7 @@ static void remove_siblinginfo(int cpu)
 	cpumask_clear(topology_sibling_cpumask(cpu));
 	cpumask_clear(topology_core_cpumask(cpu));
 	c->cpu_core_id = 0;
+	c->booted_cores = 0;
 	cpumask_clear_cpu(cpu, cpu_sibling_setup_mask);
 	recompute_smt_state();
 }

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-02-23  8:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-21 20:50 [PATCH] smpboot: correctly update number of booted cores Samuel Neves
2018-02-22  8:07 ` Dou Liyang
2018-02-23  8:29 ` [tip:x86/urgent] x86/topology: Update the 'cpu cores' field in /proc/cpuinfo correctly across CPU hotplug operations tip-bot for Samuel Neves

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.