sched/x86: Calculate booted cores after construction of sibling_mask
authorKamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Thu, 31 May 2012 07:37:38 +0000 (13:07 +0530)
committerIngo Molnar <mingo@kernel.org>
Wed, 6 Jun 2012 14:37:59 +0000 (16:37 +0200)
commitceb1cbac8eda66cf0f889def226b4e82f8ff857b
tree1435a96e5f1a22e9ceca0032c0c2b0791e005f06
parenteea5b5510fc5545d15b69da8e485a7424ae388cf
sched/x86: Calculate booted cores after construction of sibling_mask

Commit 316ad248307fb ("sched/x86: Rewrite set_cpu_sibling_map()")
broke the booted_cores accounting.

The problem is that the booted_cores accounting needs all the
sibling links set up. So restore the second loop and add a comment as
to why its needed.

On qemu booted with -smp sockets=1,cores=2,threads=2;
Before:
 $ grep cores /proc/cpuinfo
 cpu cores       : 2
 cpu cores       : 1
 cpu cores       : 4
 cpu cores       : 3

With the patch:
 $ grep cores /proc/cpuinfo
 cpu cores       : 2
 cpu cores       : 2
 cpu cores       : 2
 cpu cores       : 2

Reported-by: Prarit Bhargava <prarit@redhat.com>
Reported-by: Borislav Petkov <bp@amd64.org>
Signed-off-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20120531073738.GH7511@linux.vnet.ibm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/smpboot.c