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>
        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)
 {
        unsigned long stack;
         */
        restart_stack = (void *)(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->kernel_stack = S390_lowcore.kernel_stack;
        /*
 
        local_mcck_enable();
        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->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), sizeof(*lc_ipl));
        return 0;