diff options
Diffstat (limited to 'arch/sparc/kernel/sun4d_smp.c')
-rw-r--r-- | arch/sparc/kernel/sun4d_smp.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c index 69596402a500..7a6a5e795928 100644 --- a/arch/sparc/kernel/sun4d_smp.c +++ b/arch/sparc/kernel/sun4d_smp.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/swap.h> | 20 | #include <linux/swap.h> |
21 | #include <linux/profile.h> | 21 | #include <linux/profile.h> |
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/cpu.h> | ||
23 | 24 | ||
24 | #include <asm/ptrace.h> | 25 | #include <asm/ptrace.h> |
25 | #include <asm/atomic.h> | 26 | #include <asm/atomic.h> |
@@ -30,7 +31,6 @@ | |||
30 | #include <asm/pgalloc.h> | 31 | #include <asm/pgalloc.h> |
31 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
32 | #include <asm/oplib.h> | 33 | #include <asm/oplib.h> |
33 | #include <asm/sbus.h> | ||
34 | #include <asm/sbi.h> | 34 | #include <asm/sbi.h> |
35 | #include <asm/tlbflush.h> | 35 | #include <asm/tlbflush.h> |
36 | #include <asm/cacheflush.h> | 36 | #include <asm/cacheflush.h> |
@@ -72,6 +72,17 @@ static void smp_setup_percpu_timer(void); | |||
72 | extern void cpu_probe(void); | 72 | extern void cpu_probe(void); |
73 | extern void sun4d_distribute_irqs(void); | 73 | extern void sun4d_distribute_irqs(void); |
74 | 74 | ||
75 | static unsigned char cpu_leds[32]; | ||
76 | |||
77 | static inline void show_leds(int cpuid) | ||
78 | { | ||
79 | cpuid &= 0x1e; | ||
80 | __asm__ __volatile__ ("stba %0, [%1] %2" : : | ||
81 | "r" ((cpu_leds[cpuid] << 4) | cpu_leds[cpuid+1]), | ||
82 | "r" (ECSR_BASE(cpuid) | BB_LEDS), | ||
83 | "i" (ASI_M_CTL)); | ||
84 | } | ||
85 | |||
75 | void __init smp4d_callin(void) | 86 | void __init smp4d_callin(void) |
76 | { | 87 | { |
77 | int cpuid = hard_smp4d_processor_id(); | 88 | int cpuid = hard_smp4d_processor_id(); |
@@ -88,6 +99,7 @@ void __init smp4d_callin(void) | |||
88 | local_flush_cache_all(); | 99 | local_flush_cache_all(); |
89 | local_flush_tlb_all(); | 100 | local_flush_tlb_all(); |
90 | 101 | ||
102 | notify_cpu_starting(cpuid); | ||
91 | /* | 103 | /* |
92 | * Unblock the master CPU _only_ when the scheduler state | 104 | * Unblock the master CPU _only_ when the scheduler state |
93 | * of all secondary CPUs will be up-to-date, so after | 105 | * of all secondary CPUs will be up-to-date, so after |