diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-16 13:52:35 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-16 13:52:35 -0500 |
| commit | 525995d77ca08dfc2ba6f8e606f93694271dbd66 (patch) | |
| tree | be9ddad66cd1301eea8dab7814cbda144a909e35 /arch/blackfin/mach-bf561/smp.c | |
| parent | e4bdda1bc3123a9e65f4dd93a23041fde8ed3dc2 (diff) | |
| parent | 64a2b168023bfd09037ba760838762e56c44178e (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.c | 17 |
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 | ||
| 53 | void __cpuinit platform_secondary_init(unsigned int cpu) | 53 | void __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 | ||
| 116 | void __init platform_request_ipi(irq_handler_t handler) | 113 | void __init platform_request_ipi(irq_handler_t handler) |
