diff options
author | David S. Miller <davem@hutch.davemloft.net> | 2007-06-04 20:01:39 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-06-05 00:50:00 -0400 |
commit | f78eae2e6f5d1eb05f76a45486286445b916bd92 (patch) | |
tree | 0fa81e104ad9891afcaf18cdcb413c4a0f2ee8da /include | |
parent | d887ab3a9b1899f88b8cfba531e726b5fb2ebd14 (diff) |
[SPARC64]: Proper multi-core scheduling support.
The scheduling domain hierarchy is:
all cpus -->
cpus that share an instruction cache -->
cpus that share an integer execution unit
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-sparc64/cpudata.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/smp.h | 1 | ||||
-rw-r--r-- | include/asm-sparc64/topology.h | 13 |
3 files changed, 12 insertions, 4 deletions
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h index 03c385de7619..445026fbec35 100644 --- a/include/asm-sparc64/cpudata.h +++ b/include/asm-sparc64/cpudata.h | |||
@@ -31,7 +31,7 @@ typedef struct { | |||
31 | unsigned int ecache_size; | 31 | unsigned int ecache_size; |
32 | unsigned int ecache_line_size; | 32 | unsigned int ecache_line_size; |
33 | int core_id; | 33 | int core_id; |
34 | unsigned int __pad3; | 34 | int proc_id; |
35 | } cpuinfo_sparc; | 35 | } cpuinfo_sparc; |
36 | 36 | ||
37 | DECLARE_PER_CPU(cpuinfo_sparc, __cpu_data); | 37 | DECLARE_PER_CPU(cpuinfo_sparc, __cpu_data); |
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h index f76e1492add5..540021268684 100644 --- a/include/asm-sparc64/smp.h +++ b/include/asm-sparc64/smp.h | |||
@@ -33,6 +33,7 @@ extern cpumask_t phys_cpu_present_map; | |||
33 | #define cpu_possible_map phys_cpu_present_map | 33 | #define cpu_possible_map phys_cpu_present_map |
34 | 34 | ||
35 | extern cpumask_t cpu_sibling_map[NR_CPUS]; | 35 | extern cpumask_t cpu_sibling_map[NR_CPUS]; |
36 | extern cpumask_t cpu_core_map[NR_CPUS]; | ||
36 | 37 | ||
37 | /* | 38 | /* |
38 | * General functions that each host system must provide. | 39 | * General functions that each host system must provide. |
diff --git a/include/asm-sparc64/topology.h b/include/asm-sparc64/topology.h index e0d450d600ec..4880f7ca0b60 100644 --- a/include/asm-sparc64/topology.h +++ b/include/asm-sparc64/topology.h | |||
@@ -1,12 +1,19 @@ | |||
1 | #ifndef _ASM_SPARC64_TOPOLOGY_H | 1 | #ifndef _ASM_SPARC64_TOPOLOGY_H |
2 | #define _ASM_SPARC64_TOPOLOGY_H | 2 | #define _ASM_SPARC64_TOPOLOGY_H |
3 | 3 | ||
4 | #ifdef CONFIG_SMP | ||
4 | #include <asm/spitfire.h> | 5 | #include <asm/spitfire.h> |
5 | #define smt_capable() (tlb_type == hypervisor) | ||
6 | |||
7 | #include <asm-generic/topology.h> | ||
8 | 6 | ||
7 | #define topology_physical_package_id(cpu) (cpu_data(cpu).proc_id) | ||
9 | #define topology_core_id(cpu) (cpu_data(cpu).core_id) | 8 | #define topology_core_id(cpu) (cpu_data(cpu).core_id) |
9 | #define topology_core_siblings(cpu) (cpu_core_map[cpu]) | ||
10 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) | 10 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) |
11 | #define mc_capable() (tlb_type == hypervisor) | ||
12 | #define smt_capable() (tlb_type == hypervisor) | ||
13 | #endif /* CONFIG_SMP */ | ||
14 | |||
15 | #include <asm-generic/topology.h> | ||
16 | |||
17 | #define cpu_coregroup_map(cpu) (cpu_core_map[cpu]) | ||
11 | 18 | ||
12 | #endif /* _ASM_SPARC64_TOPOLOGY_H */ | 19 | #endif /* _ASM_SPARC64_TOPOLOGY_H */ |