]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
sh: Support SCHED_MC for SH-X3 multi-cores.
authorPaul Mundt <lethal@linux-sh.org>
Fri, 16 Oct 2009 09:00:02 +0000 (18:00 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 16 Oct 2009 09:00:02 +0000 (18:00 +0900)
This enables SCHED_MC support for SH-X3 multi-cores. Presently this is
just a simple wrapper around the possible map, but this allows for
tying in support for some of the more exotic NUMA clusters where we can
actually do something with the topology.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/include/asm/topology.h
arch/sh/kernel/topology.c
arch/sh/mm/Kconfig

index 65e7bd2f2240c1a0dfcd168cccf8c101e67103d0..37cdadd975ac93e79d0f0fa281d9836697f88054 100644 (file)
 
 #endif
 
+#define mc_capable()    (1)
+
+const struct cpumask *cpu_coregroup_mask(unsigned int cpu);
+
+extern cpumask_t cpu_core_map[NR_CPUS];
+
+#define topology_core_cpumask(cpu)     (&cpu_core_map[cpu])
+
 #include <asm-generic/topology.h>
 
 #endif /* _ASM_SH_TOPOLOGY_H */
index 0838942b70837f715634e80d099e9f31b0f99001..9b0b633b6c92b29e8ba76c95cc87542633ac54bb 100644 (file)
 
 static DEFINE_PER_CPU(struct cpu, cpu_devices);
 
+cpumask_t cpu_core_map[NR_CPUS];
+
+static cpumask_t cpu_coregroup_map(unsigned int cpu)
+{
+       /*
+        * Presently all SH-X3 SMP cores are multi-cores, so just keep it
+        * simple until we have a method for determining topology..
+        */
+       return cpu_possible_map;
+}
+
+const struct cpumask *cpu_coregroup_mask(unsigned int cpu)
+{
+       return &cpu_core_map[cpu];
+}
+
+int arch_update_cpu_topology(void)
+{
+       unsigned int cpu;
+
+       for_each_possible_cpu(cpu)
+               cpu_core_map[cpu] = cpu_coregroup_map(cpu);
+
+       return 0;
+}
+
 static int __init topology_init(void)
 {
        int i, ret;
index b8a9032c74be4dc24d7cd1d347be2a0cc35cc965..ca02b72bf46f706eb89c2eb58194c9ed4bf96393 100644 (file)
@@ -256,6 +256,15 @@ endchoice
 
 source "mm/Kconfig"
 
+config SCHED_MC
+       bool "Multi-core scheduler support"
+       depends on SMP
+       default y
+       help
+         Multi-core scheduler support improves the CPU scheduler's decision
+         making when dealing with multi-core CPU chips at a cost of slightly
+         increased overhead in some places. If unsure say N here.
+
 endmenu
 
 menu "Cache configuration"