diff options
Diffstat (limited to 'arch/powerpc/kernel/setup_32.c')
| -rw-r--r-- | arch/powerpc/kernel/setup_32.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index a10ffc85ada7..93666f9cabf1 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c | |||
| @@ -258,17 +258,18 @@ static void __init irqstack_early_init(void) | |||
| 258 | #if defined(CONFIG_BOOKE) || defined(CONFIG_40x) | 258 | #if defined(CONFIG_BOOKE) || defined(CONFIG_40x) |
| 259 | static void __init exc_lvl_early_init(void) | 259 | static void __init exc_lvl_early_init(void) |
| 260 | { | 260 | { |
| 261 | unsigned int i; | 261 | unsigned int i, hw_cpu; |
| 262 | 262 | ||
| 263 | /* interrupt stacks must be in lowmem, we get that for free on ppc32 | 263 | /* interrupt stacks must be in lowmem, we get that for free on ppc32 |
| 264 | * as the memblock is limited to lowmem by MEMBLOCK_REAL_LIMIT */ | 264 | * as the memblock is limited to lowmem by MEMBLOCK_REAL_LIMIT */ |
| 265 | for_each_possible_cpu(i) { | 265 | for_each_possible_cpu(i) { |
| 266 | critirq_ctx[i] = (struct thread_info *) | 266 | hw_cpu = get_hard_smp_processor_id(i); |
| 267 | critirq_ctx[hw_cpu] = (struct thread_info *) | ||
| 267 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); | 268 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); |
| 268 | #ifdef CONFIG_BOOKE | 269 | #ifdef CONFIG_BOOKE |
| 269 | dbgirq_ctx[i] = (struct thread_info *) | 270 | dbgirq_ctx[hw_cpu] = (struct thread_info *) |
| 270 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); | 271 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); |
| 271 | mcheckirq_ctx[i] = (struct thread_info *) | 272 | mcheckirq_ctx[hw_cpu] = (struct thread_info *) |
| 272 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); | 273 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); |
| 273 | #endif | 274 | #endif |
| 274 | } | 275 | } |
