powerpc: Use cpu_smallcore_sibling_mask at SMT level on bigcores
authorGautham R. Shenoy <ego@linux.vnet.ibm.com>
Thu, 11 Oct 2018 05:33:02 +0000 (11:03 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 13 Oct 2018 11:21:25 +0000 (22:21 +1100)
commit8e8a31d7fd54d68fc9c6c1e69f52ccdaf43b01ea
treed3fb51233ffe53983f04fdf805c8b65a7692fd42
parent425752c63b6f3fed7b5a9cba2b8101a92cf36995
powerpc: Use cpu_smallcore_sibling_mask at SMT level on bigcores

POWER9 SMT8 cores consist of two groups of threads, where threads in
each group shares L1-cache. The scheduler is not aware of this
distinction as the current sched-domain hierarchy has all the threads
of the core defined at the SMT domain.

SMT  [Thread siblings of the SMT8 core]
DIE  [CPUs in the same die]
NUMA [All the CPUs in the system]

Due to this, we can observe run-to-run variance when we run a
multi-threaded benchmark bound to a single core based on how the
scheduler spreads the software threads across the two groups in the
core.

We fix this in this patch by defining each group of threads which
share L1-cache to be the SMT level. The group of threads in the SMT8
core is defined to be the CACHE level. The sched-domain hierarchy
after this patch will be :

SMT [Thread siblings in the core that share L1 cache]
CACHE  [Thread siblings that are in the SMT8 core]
DIE   [CPUs in the same die]
NUMA  [All the CPUs in the system]

Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/smp.c