diff options
| -rw-r--r-- | arch/sh/include/asm/topology.h | 8 | ||||
| -rw-r--r-- | arch/sh/kernel/topology.c | 26 | ||||
| -rw-r--r-- | arch/sh/mm/Kconfig | 9 |
3 files changed, 43 insertions, 0 deletions
diff --git a/arch/sh/include/asm/topology.h b/arch/sh/include/asm/topology.h index 65e7bd2f224..37cdadd975a 100644 --- a/arch/sh/include/asm/topology.h +++ b/arch/sh/include/asm/topology.h | |||
| @@ -40,6 +40,14 @@ | |||
| 40 | 40 | ||
| 41 | #endif | 41 | #endif |
| 42 | 42 | ||
| 43 | #define mc_capable() (1) | ||
| 44 | |||
| 45 | const struct cpumask *cpu_coregroup_mask(unsigned int cpu); | ||
| 46 | |||
| 47 | extern cpumask_t cpu_core_map[NR_CPUS]; | ||
| 48 | |||
| 49 | #define topology_core_cpumask(cpu) (&cpu_core_map[cpu]) | ||
| 50 | |||
| 43 | #include <asm-generic/topology.h> | 51 | #include <asm-generic/topology.h> |
| 44 | 52 | ||
| 45 | #endif /* _ASM_SH_TOPOLOGY_H */ | 53 | #endif /* _ASM_SH_TOPOLOGY_H */ |
diff --git a/arch/sh/kernel/topology.c b/arch/sh/kernel/topology.c index 0838942b708..9b0b633b6c9 100644 --- a/arch/sh/kernel/topology.c +++ b/arch/sh/kernel/topology.c | |||
| @@ -16,6 +16,32 @@ | |||
| 16 | 16 | ||
| 17 | static DEFINE_PER_CPU(struct cpu, cpu_devices); | 17 | static DEFINE_PER_CPU(struct cpu, cpu_devices); |
| 18 | 18 | ||
| 19 | cpumask_t cpu_core_map[NR_CPUS]; | ||
| 20 | |||
| 21 | static cpumask_t cpu_coregroup_map(unsigned int cpu) | ||
| 22 | { | ||
| 23 | /* | ||
| 24 | * Presently all SH-X3 SMP cores are multi-cores, so just keep it | ||
| 25 | * simple until we have a method for determining topology.. | ||
| 26 | */ | ||
| 27 | return cpu_possible_map; | ||
| 28 | } | ||
| 29 | |||
| 30 | const struct cpumask *cpu_coregroup_mask(unsigned int cpu) | ||
| 31 | { | ||
| 32 | return &cpu_core_map[cpu]; | ||
| 33 | } | ||
| 34 | |||
| 35 | int arch_update_cpu_topology(void) | ||
| 36 | { | ||
| 37 | unsigned int cpu; | ||
| 38 | |||
| 39 | for_each_possible_cpu(cpu) | ||
| 40 | cpu_core_map[cpu] = cpu_coregroup_map(cpu); | ||
| 41 | |||
| 42 | return 0; | ||
| 43 | } | ||
| 44 | |||
| 19 | static int __init topology_init(void) | 45 | static int __init topology_init(void) |
| 20 | { | 46 | { |
| 21 | int i, ret; | 47 | int i, ret; |
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig index b8a9032c74b..ca02b72bf46 100644 --- a/arch/sh/mm/Kconfig +++ b/arch/sh/mm/Kconfig | |||
| @@ -256,6 +256,15 @@ endchoice | |||
| 256 | 256 | ||
| 257 | source "mm/Kconfig" | 257 | source "mm/Kconfig" |
| 258 | 258 | ||
| 259 | config SCHED_MC | ||
| 260 | bool "Multi-core scheduler support" | ||
| 261 | depends on SMP | ||
| 262 | default y | ||
| 263 | help | ||
| 264 | Multi-core scheduler support improves the CPU scheduler's decision | ||
| 265 | making when dealing with multi-core CPU chips at a cost of slightly | ||
| 266 | increased overhead in some places. If unsure say N here. | ||
| 267 | |||
| 259 | endmenu | 268 | endmenu |
| 260 | 269 | ||
| 261 | menu "Cache configuration" | 270 | menu "Cache configuration" |
