sparc64: Setup a scheduling domain for highest level cache.
authorAtish Patra <atish.patra@oracle.com>
Thu, 20 Oct 2016 00:33:29 +0000 (18:33 -0600)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Oct 2016 18:04:17 +0000 (11:04 -0700)
commitd624716b6c67e60681180786564b92ddb521148a
tree515fe225d781a617412e64dfa36aa1056cf9bd25
parent07d9a380680d1c0eb51ef87ff2eab5c994949e69
sparc64: Setup a scheduling domain for highest level cache.

Individual scheduler domain should consist different hierarchy
consisting of cores sharing similar property. Currently, no
scheduler domain is defined separately for the cores that shares
the last level cache. As a result, the scheduler fails to take
advantage of cache locality while migrating tasks during load
balancing.

Here are the cpu masks currently present for sparc that are/can
be used in scheduler domain construction.
cpu_core_map : set based on the cores that shares l1 cache.
core_core_sib_map : is set based on the socket id.
The prior SPARC notion of socket was defined as highest level of
shared cache. However, the MD record on T7 platforms now describes
the CPUs that share the physical socket and this is no longer tied
to shared cache.

That's why a separate cpu mask needs to be created that truly
represent highest level of shared cache for all platforms.

Signed-off-by: Atish Patra <atish.patra@oracle.com>
Reviewed-by: Chris Hyser <chris.hyser@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/include/asm/cpudata_64.h
arch/sparc/include/asm/topology_64.h
arch/sparc/kernel/mdesc.c
arch/sparc/kernel/smp_64.c