diff --git a/[refs] b/[refs] index 44d64f6593d5..de90bd2b922c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e7f8b14e028f7a2f9e5c83c17164aeeeb9c61f17 +refs/heads/master: 802b8133b4f78c30a2668d142d78861e27c0c6a7 diff --git a/trunk/arch/x86/kernel/smpboot_32.c b/trunk/arch/x86/kernel/smpboot_32.c index 5cae17f3eb75..255c6f761480 100644 --- a/trunk/arch/x86/kernel/smpboot_32.c +++ b/trunk/arch/x86/kernel/smpboot_32.c @@ -708,8 +708,12 @@ static void __cpuinit __smp_prepare_cpu(int cpu) clone_pgd_range(swapper_pg_dir, swapper_pg_dir + USER_PGD_PTRS, min_t(unsigned long, KERNEL_PGD_PTRS, USER_PGD_PTRS)); flush_tlb_all(); - schedule_work(&info.task); - wait_for_completion(&done); + if (!keventd_up() || current_is_keventd()) + info.task.func(&info.task); + else { + schedule_work(&info.task); + wait_for_completion(&done); + } zap_low_mappings(); }