diff options
Diffstat (limited to 'arch/powerpc/platforms/powermac/smp.c')
-rw-r--r-- | arch/powerpc/platforms/powermac/smp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c index 574cd205b302..eeb2ae5ffc58 100644 --- a/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c | |||
@@ -328,6 +328,7 @@ static void __init smp_psurge_kick_cpu(int nr) | |||
328 | { | 328 | { |
329 | unsigned long start = __pa(__secondary_start_pmac_0) + nr * 8; | 329 | unsigned long start = __pa(__secondary_start_pmac_0) + nr * 8; |
330 | unsigned long a; | 330 | unsigned long a; |
331 | int i; | ||
331 | 332 | ||
332 | /* may need to flush here if secondary bats aren't setup */ | 333 | /* may need to flush here if secondary bats aren't setup */ |
333 | for (a = KERNELBASE; a < KERNELBASE + 0x800000; a += 32) | 334 | for (a = KERNELBASE; a < KERNELBASE + 0x800000; a += 32) |
@@ -340,7 +341,11 @@ static void __init smp_psurge_kick_cpu(int nr) | |||
340 | mb(); | 341 | mb(); |
341 | 342 | ||
342 | psurge_set_ipi(nr); | 343 | psurge_set_ipi(nr); |
343 | udelay(10); | 344 | /* |
345 | * We can't use udelay here because the timebase is now frozen. | ||
346 | */ | ||
347 | for (i = 0; i < 2000; ++i) | ||
348 | barrier(); | ||
344 | psurge_clr_ipi(nr); | 349 | psurge_clr_ipi(nr); |
345 | 350 | ||
346 | if (ppc_md.progress) ppc_md.progress("smp_psurge_kick_cpu - done", 0x354); | 351 | if (ppc_md.progress) ppc_md.progress("smp_psurge_kick_cpu - done", 0x354); |