Commit 2cd24267 authored by Anton Blanchard's avatar Anton Blanchard Committed by Linus Torvalds

[PATCH] ppc64: Fix POWER5/JS20 SMP init

My recent change to dynamically allocate emergency stacks broke JS20
blades and POWER5. Since we use the emergency stacks in real mode during
secondary CPU bringup they must be below the RMO.
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 41d1425b
...@@ -724,16 +724,23 @@ static void __init irqstack_early_init(void) ...@@ -724,16 +724,23 @@ static void __init irqstack_early_init(void)
*/ */
static void __init emergency_stack_init(void) static void __init emergency_stack_init(void)
{ {
unsigned long limit;
unsigned int i; unsigned int i;
/* /*
* Emergency stacks must be under 256MB, we cannot afford to take * Emergency stacks must be under 256MB, we cannot afford to take
* SLB misses on them. The ABI also requires them to be 128-byte * SLB misses on them. The ABI also requires them to be 128-byte
* aligned. * aligned.
*
* Since we use these as temporary stacks during secondary CPU
* bringup, we need to get at them in real mode. This means they
* must also be within the RMO region.
*/ */
limit = min(0x10000000UL, lmb.rmo_size);
for_each_cpu(i) for_each_cpu(i)
paca[i].emergency_sp = __va(lmb_alloc_base(PAGE_SIZE, 128, paca[i].emergency_sp = __va(lmb_alloc_base(PAGE_SIZE, 128,
0x10000000)) + PAGE_SIZE; limit)) + PAGE_SIZE;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment