Provide an powerpc architecture specific implementation for defining the turbo domain to make searching of the core to be bound within the NUMA.
The POWER9 systems have a pair of cores in the LLC domain. Hence to make TurboSched more effective, increase the domain space for task packing to search within NUMA domain. Signed-off-by: Parth Shah <pa...@linux.ibm.com> --- arch/powerpc/include/asm/topology.h | 3 +++ arch/powerpc/kernel/smp.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h index f85e2b01c3df..b2493bb11653 100644 --- a/arch/powerpc/include/asm/topology.h +++ b/arch/powerpc/include/asm/topology.h @@ -132,6 +132,9 @@ static inline void shared_proc_topology_init(void) {} #define topology_sibling_cpumask(cpu) (per_cpu(cpu_sibling_map, cpu)) #define topology_core_cpumask(cpu) (per_cpu(cpu_core_map, cpu)) #define topology_core_id(cpu) (cpu_to_core_id(cpu)) +#define arch_turbo_domain powerpc_turbo_domain + +struct cpumask *powerpc_turbo_domain(int cpu); int dlpar_cpu_readd(int cpu); #endif diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index ea6adbf6a221..0fc4443a3f27 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -1169,6 +1169,13 @@ static void remove_cpu_from_masks(int cpu) } #endif +#ifdef CONFIG_SCHED_SMT +inline struct cpumask *powerpc_turbo_domain(int cpu) +{ + return cpumask_of_node(cpu_to_node(cpu)); +} +#endif + static inline void add_cpu_to_smallcore_masks(int cpu) { struct cpumask *this_l1_cache_map = per_cpu(cpu_l1_cache_map, cpu); -- 2.17.1