On Fri, Apr 11, 2014 at 11:44:37AM +0200, Vincent Guittot wrote:
We replace the old way to configure the scheduler topology with a new method which enables a platform to declare additionnal level (if needed).
We still have a default topology table definition that can be used by platform that don't want more level than the SMT, MC, CPU and NUMA ones. This table can be overwritten by an arch which either wants to add new level where a load balance make sense like BOOK or powergating level or wants to change the flags configuration of some levels.
For each level, we need a function pointer that returns cpumask for each cpu, a function pointer that returns the flags for the level and a name. Only flags that describe topology, can be set by an architecture. The current topology flags are: SD_SHARE_CPUPOWER SD_SHARE_PKG_RESOURCES SD_NUMA SD_ASYM_PACKING
Then, each level must be a subset on the next one. The build sequence of the sched_domain will take care of removing useless levels like those with 1 CPU and those with the same CPU span and no more relevant information for load balancing than its childs.
Signed-off-by: Vincent Guittot vincent.guittot@linaro.org Reviewed-by: Preeti U Murthy preeti@linux.vnet.ibm.com
On x86_64 defconfig this gets me:
kernel/sched/core.c: In function 'sched_init_numa': kernel/sched/core.c:6197:4: warning: initialization makes pointer from integer without a cast [enabled by default] kernel/sched/core.c:6197:4: warning: (near initialization for '(anonymous).sd_flags') [enabled by default]