|
@@ -258,17 +258,18 @@ static void __init irqstack_early_init(void)
|
|
|
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
|
|
static void __init exc_lvl_early_init(void)
|
|
|
{
|
|
|
- unsigned int i;
|
|
|
+ unsigned int i, hw_cpu;
|
|
|
|
|
|
/* interrupt stacks must be in lowmem, we get that for free on ppc32
|
|
|
* as the memblock is limited to lowmem by MEMBLOCK_REAL_LIMIT */
|
|
|
for_each_possible_cpu(i) {
|
|
|
- critirq_ctx[i] = (struct thread_info *)
|
|
|
+ hw_cpu = get_hard_smp_processor_id(i);
|
|
|
+ critirq_ctx[hw_cpu] = (struct thread_info *)
|
|
|
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
|
|
#ifdef CONFIG_BOOKE
|
|
|
- dbgirq_ctx[i] = (struct thread_info *)
|
|
|
+ dbgirq_ctx[hw_cpu] = (struct thread_info *)
|
|
|
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
|
|
- mcheckirq_ctx[i] = (struct thread_info *)
|
|
|
+ mcheckirq_ctx[hw_cpu] = (struct thread_info *)
|
|
|
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
|
|
#endif
|
|
|
}
|