Browse Source

x86: schedule work only if keventd is already running

Only call schedule_work if keventd is already running.
This is already the way x86_64 does

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Glauber de Oliveira Costa 17 years ago
parent
commit
802b8133b4
1 changed files with 6 additions and 2 deletions
  1. 6 2
      arch/x86/kernel/smpboot_32.c

+ 6 - 2
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();
 }