s390: remove arch_early_irq_init()
Allocate early async stack like other early stacks and get rid of arch_early_irq_init(). This way the async stack is allocated earlier, and handled like all other stacks. Reviewed-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
23be82f0de
commit
60afa6d166
|
@ -386,17 +386,6 @@ void __init arch_call_rest_init(void)
|
||||||
rest_init();
|
rest_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init arch_early_irq_init(void)
|
|
||||||
{
|
|
||||||
unsigned long stack;
|
|
||||||
|
|
||||||
stack = __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER);
|
|
||||||
if (!stack)
|
|
||||||
panic("Couldn't allocate async stack");
|
|
||||||
S390_lowcore.async_stack = stack + STACK_INIT_OFFSET;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long __init stack_alloc_early(void)
|
static unsigned long __init stack_alloc_early(void)
|
||||||
{
|
{
|
||||||
unsigned long stack;
|
unsigned long stack;
|
||||||
|
@ -453,6 +442,7 @@ static void __init setup_lowcore(void)
|
||||||
*/
|
*/
|
||||||
restart_stack = (void *)(stack_alloc_early() + STACK_INIT_OFFSET);
|
restart_stack = (void *)(stack_alloc_early() + STACK_INIT_OFFSET);
|
||||||
lc->mcck_stack = stack_alloc_early() + STACK_INIT_OFFSET;
|
lc->mcck_stack = stack_alloc_early() + STACK_INIT_OFFSET;
|
||||||
|
lc->async_stack = stack_alloc_early() + STACK_INIT_OFFSET;
|
||||||
lc->nodat_stack = stack_alloc_early() + STACK_INIT_OFFSET;
|
lc->nodat_stack = stack_alloc_early() + STACK_INIT_OFFSET;
|
||||||
lc->kernel_stack = S390_lowcore.kernel_stack;
|
lc->kernel_stack = S390_lowcore.kernel_stack;
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1293,8 +1293,8 @@ int __init smp_reinit_ipl_cpu(void)
|
||||||
local_mcck_enable();
|
local_mcck_enable();
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
|
||||||
free_pages(lc_ipl->async_stack - STACK_INIT_OFFSET, THREAD_SIZE_ORDER);
|
|
||||||
memblock_free_late(__pa(lc_ipl->mcck_stack - STACK_INIT_OFFSET), THREAD_SIZE);
|
memblock_free_late(__pa(lc_ipl->mcck_stack - STACK_INIT_OFFSET), THREAD_SIZE);
|
||||||
|
memblock_free_late(__pa(lc_ipl->async_stack - STACK_INIT_OFFSET), THREAD_SIZE);
|
||||||
memblock_free_late(__pa(lc_ipl->nodat_stack - STACK_INIT_OFFSET), THREAD_SIZE);
|
memblock_free_late(__pa(lc_ipl->nodat_stack - STACK_INIT_OFFSET), THREAD_SIZE);
|
||||||
memblock_free_late(__pa(lc_ipl), sizeof(*lc_ipl));
|
memblock_free_late(__pa(lc_ipl), sizeof(*lc_ipl));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue