diff options
author | David S. Miller <davem@hutch.davemloft.net> | 2007-06-05 00:48:33 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-06-05 00:50:05 -0400 |
commit | a2f9f6bbb30e60ee9f9f83cede960123a65876a2 (patch) | |
tree | 84388015bd5ba7c4d01fc256d8fb6a2f3d2a93a9 | |
parent | 5cd342df96e911fb8135fb3d58f33c2c5af9ffab (diff) |
[SPARC64]: Fix {mc,smt}_capable().
It's not just sun4v hypervisor platforms that should return true
for this, sun4u with UltraSPARC-IV should return true too.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | arch/sparc64/kernel/mdesc.c | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/prom.c | 3 | ||||
-rw-r--r-- | arch/sparc64/kernel/smp.c | 2 | ||||
-rw-r--r-- | include/asm-sparc64/smp.h | 1 | ||||
-rw-r--r-- | include/asm-sparc64/topology.h | 6 |
5 files changed, 12 insertions, 4 deletions
diff --git a/arch/sparc64/kernel/mdesc.c b/arch/sparc64/kernel/mdesc.c index 1b5db4bc6b34..f0e16045fb16 100644 --- a/arch/sparc64/kernel/mdesc.c +++ b/arch/sparc64/kernel/mdesc.c | |||
@@ -624,6 +624,10 @@ static void __init mdesc_fill_in_cpu_data(void) | |||
624 | c->proc_id = -1; | 624 | c->proc_id = -1; |
625 | } | 625 | } |
626 | 626 | ||
627 | #ifdef CONFIG_SMP | ||
628 | sparc64_multi_core = 1; | ||
629 | #endif | ||
630 | |||
627 | set_core_ids(); | 631 | set_core_ids(); |
628 | set_proc_ids(); | 632 | set_proc_ids(); |
629 | 633 | ||
diff --git a/arch/sparc64/kernel/prom.c b/arch/sparc64/kernel/prom.c index 172387d1f660..6f4a5284b0ea 100644 --- a/arch/sparc64/kernel/prom.c +++ b/arch/sparc64/kernel/prom.c | |||
@@ -1782,6 +1782,9 @@ static void __init of_fill_in_cpu_data(void) | |||
1782 | 1782 | ||
1783 | cpu_data(cpuid).core_id = portid + 1; | 1783 | cpu_data(cpuid).core_id = portid + 1; |
1784 | cpu_data(cpuid).proc_id = portid; | 1784 | cpu_data(cpuid).proc_id = portid; |
1785 | #ifdef CONFIG_SMP | ||
1786 | sparc64_multi_core = 1; | ||
1787 | #endif | ||
1785 | } else { | 1788 | } else { |
1786 | cpu_data(cpuid).dcache_size = | 1789 | cpu_data(cpuid).dcache_size = |
1787 | of_getintprop_default(dp, "dcache-size", 16 * 1024); | 1790 | of_getintprop_default(dp, "dcache-size", 16 * 1024); |
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 68a45ac93375..4dcd7d0b60f2 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -44,6 +44,8 @@ | |||
44 | 44 | ||
45 | extern void calibrate_delay(void); | 45 | extern void calibrate_delay(void); |
46 | 46 | ||
47 | int sparc64_multi_core __read_mostly; | ||
48 | |||
47 | /* Please don't make this stuff initdata!!! --DaveM */ | 49 | /* Please don't make this stuff initdata!!! --DaveM */ |
48 | unsigned char boot_cpu_id; | 50 | unsigned char boot_cpu_id; |
49 | 51 | ||
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h index 540021268684..4fb8c4bfb848 100644 --- a/include/asm-sparc64/smp.h +++ b/include/asm-sparc64/smp.h | |||
@@ -34,6 +34,7 @@ extern cpumask_t 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 | extern cpumask_t cpu_core_map[NR_CPUS]; |
37 | extern int sparc64_multi_core; | ||
37 | 38 | ||
38 | /* | 39 | /* |
39 | * General functions that each host system must provide. | 40 | * General functions that each host system must provide. |
diff --git a/include/asm-sparc64/topology.h b/include/asm-sparc64/topology.h index 4880f7ca0b60..290ac75f385b 100644 --- a/include/asm-sparc64/topology.h +++ b/include/asm-sparc64/topology.h | |||
@@ -2,14 +2,12 @@ | |||
2 | #define _ASM_SPARC64_TOPOLOGY_H | 2 | #define _ASM_SPARC64_TOPOLOGY_H |
3 | 3 | ||
4 | #ifdef CONFIG_SMP | 4 | #ifdef CONFIG_SMP |
5 | #include <asm/spitfire.h> | ||
6 | |||
7 | #define topology_physical_package_id(cpu) (cpu_data(cpu).proc_id) | 5 | #define topology_physical_package_id(cpu) (cpu_data(cpu).proc_id) |
8 | #define topology_core_id(cpu) (cpu_data(cpu).core_id) | 6 | #define topology_core_id(cpu) (cpu_data(cpu).core_id) |
9 | #define topology_core_siblings(cpu) (cpu_core_map[cpu]) | 7 | #define topology_core_siblings(cpu) (cpu_core_map[cpu]) |
10 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) | 8 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) |
11 | #define mc_capable() (tlb_type == hypervisor) | 9 | #define mc_capable() (sparc64_multi_core) |
12 | #define smt_capable() (tlb_type == hypervisor) | 10 | #define smt_capable() (sparc64_multi_core) |
13 | #endif /* CONFIG_SMP */ | 11 | #endif /* CONFIG_SMP */ |
14 | 12 | ||
15 | #include <asm-generic/topology.h> | 13 | #include <asm-generic/topology.h> |