diff options
author | Steven Miao <realmz6@gmail.com> | 2013-07-09 03:39:53 -0400 |
---|---|---|
committer | Steven Miao <realmz6@gmail.com> | 2013-07-09 03:50:38 -0400 |
commit | 150382a53d11256e5666c86525c8bf8d23684532 (patch) | |
tree | 5a0e5a70ba6006456c4d28ec53e6bf35c353e90c /arch/blackfin/mach-bf561 | |
parent | b700a3f304cfc8589f3a5b6012bdd3689b778033 (diff) |
smp: refine bf561 smpboot code
release boot lock earlier to let coreb do setup and calibrate
set coreb online later after initialization ready
add BFIN_IPI_NONE IPI type
drop unnecesarry smp_mb() and using atomic type
Signed-off-by: Steven Miao <realmz6@gmail.com>
Diffstat (limited to 'arch/blackfin/mach-bf561')
-rw-r--r-- | arch/blackfin/mach-bf561/smp.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/blackfin/mach-bf561/smp.c b/arch/blackfin/mach-bf561/smp.c index ab1c617b9cfc..c77a23bc9de3 100644 --- a/arch/blackfin/mach-bf561/smp.c +++ b/arch/blackfin/mach-bf561/smp.c | |||
@@ -69,7 +69,6 @@ void __cpuinit platform_secondary_init(unsigned int cpu) | |||
69 | SSYNC(); | 69 | SSYNC(); |
70 | 70 | ||
71 | /* We are done with local CPU inits, unblock the boot CPU. */ | 71 | /* We are done with local CPU inits, unblock the boot CPU. */ |
72 | set_cpu_online(cpu, true); | ||
73 | spin_lock(&boot_lock); | 72 | spin_lock(&boot_lock); |
74 | spin_unlock(&boot_lock); | 73 | spin_unlock(&boot_lock); |
75 | } | 74 | } |
@@ -91,7 +90,9 @@ int __cpuinit platform_boot_secondary(unsigned int cpu, struct task_struct *idle | |||
91 | SSYNC(); | 90 | SSYNC(); |
92 | } | 91 | } |
93 | 92 | ||
94 | timeout = jiffies + 1 * HZ; | 93 | timeout = jiffies + HZ; |
94 | /* release the lock and let coreb run */ | ||
95 | spin_unlock(&boot_lock); | ||
95 | while (time_before(jiffies, timeout)) { | 96 | while (time_before(jiffies, timeout)) { |
96 | if (cpu_online(cpu)) | 97 | if (cpu_online(cpu)) |
97 | break; | 98 | break; |
@@ -100,8 +101,6 @@ int __cpuinit platform_boot_secondary(unsigned int cpu, struct task_struct *idle | |||
100 | } | 101 | } |
101 | 102 | ||
102 | if (cpu_online(cpu)) { | 103 | if (cpu_online(cpu)) { |
103 | /* release the lock and let coreb run */ | ||
104 | spin_unlock(&boot_lock); | ||
105 | return 0; | 104 | return 0; |
106 | } else | 105 | } else |
107 | panic("CPU%u: processor failed to boot\n", cpu); | 106 | panic("CPU%u: processor failed to boot\n", cpu); |