aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-bf561/smp.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 13:52:35 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 13:52:35 -0500
commit525995d77ca08dfc2ba6f8e606f93694271dbd66 (patch)
treebe9ddad66cd1301eea8dab7814cbda144a909e35 /arch/blackfin/mach-bf561/smp.c
parente4bdda1bc3123a9e65f4dd93a23041fde8ed3dc2 (diff)
parent64a2b168023bfd09037ba760838762e56c44178e (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (88 commits) Blackfin: Convert BUG() to use unreachable() Blackfin: define __NR_recvmmsg Blackfin: drop duplicate sched_clock Blackfin: NOMPU: skip DMA ICPLB hole when it is redundant Blackfin: MPU: add missing __init markings Blackfin: add support for TIF_NOTIFY_RESUME Blackfin: kgdb_test: clean up code a bit Blackfin: convert kgdbtest to proc_fops Blackfin: convert cyc2ns() to clocksource_cyc2ns() Blackfin: ip0x: pull in asm/portmux.h for P_xxx defines Blackfin: drop unused ax88180 resources Blackfin: bf537-stamp: add ADF702x network driver resources Blackfin: bf537-stamp: add CAN resources Blackfin: bf537-stamp: add AD5258 i2c address Blackfin: bf537-stamp: add adau1761 i2c address Blackfin: bf537-stamp: add adau1371 i2c address Blackfin: bf537-stamp: add ADP8870 resources Blackfin: bf537-stamp: kill AD714x board-specific Kconfigs Blackfin: bf537-stamp: update ADP5520 resources Blackfin: bf537-stamp: add ADXL346 orientation sensing support ...
Diffstat (limited to 'arch/blackfin/mach-bf561/smp.c')
-rw-r--r--arch/blackfin/mach-bf561/smp.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/arch/blackfin/mach-bf561/smp.c b/arch/blackfin/mach-bf561/smp.c
index 510f57641495..0192532e96a2 100644
--- a/arch/blackfin/mach-bf561/smp.c
+++ b/arch/blackfin/mach-bf561/smp.c
@@ -52,8 +52,6 @@ int __init setup_profiling_timer(unsigned int multiplier) /* not supported */
52 52
53void __cpuinit platform_secondary_init(unsigned int cpu) 53void __cpuinit platform_secondary_init(unsigned int cpu)
54{ 54{
55 local_irq_disable();
56
57 /* Clone setup for peripheral interrupt sources from CoreA. */ 55 /* Clone setup for peripheral interrupt sources from CoreA. */
58 bfin_write_SICB_IMASK0(bfin_read_SICA_IMASK0()); 56 bfin_write_SICB_IMASK0(bfin_read_SICA_IMASK0());
59 bfin_write_SICB_IMASK1(bfin_read_SICA_IMASK1()); 57 bfin_write_SICB_IMASK1(bfin_read_SICA_IMASK1());
@@ -70,11 +68,6 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
70 bfin_write_SICB_IAR7(bfin_read_SICA_IAR7()); 68 bfin_write_SICB_IAR7(bfin_read_SICA_IAR7());
71 SSYNC(); 69 SSYNC();
72 70
73 local_irq_enable();
74
75 /* Calibrate loops per jiffy value. */
76 calibrate_delay();
77
78 /* Store CPU-private information to the cpu_data array. */ 71 /* Store CPU-private information to the cpu_data array. */
79 bfin_setup_cpudata(cpu); 72 bfin_setup_cpudata(cpu);
80 73
@@ -108,9 +101,13 @@ int __cpuinit platform_boot_secondary(unsigned int cpu, struct task_struct *idle
108 barrier(); 101 barrier();
109 } 102 }
110 103
111 spin_unlock(&boot_lock); 104 if (cpu_isset(cpu, cpu_callin_map)) {
112 105 cpu_set(cpu, cpu_online_map);
113 return cpu_isset(cpu, cpu_callin_map) ? 0 : -ENOSYS; 106 /* release the lock and let coreb run */
107 spin_unlock(&boot_lock);
108 return 0;
109 } else
110 panic("CPU%u: processor failed to boot\n", cpu);
114} 111}
115 112
116void __init platform_request_ipi(irq_handler_t handler) 113void __init platform_request_ipi(irq_handler_t handler)