From 1c4cf3aaafa5540de766ecfe9e82666a5a9568f9 Mon Sep 17 00:00:00 2001 From: Glauber de Oliveira Costa Date: Wed, 19 Mar 2008 14:25:46 -0300 Subject: [PATCH] --- yaml --- r: 88831 b: refs/heads/master c: 4c07ad6950c2c7077c6d60a3ce83fdbbb553bd65 h: refs/heads/master i: 88829: f951a9afea6a86e688c5b492aee7315d37a29c9d 88827: 00509cca56d5ce6f905fea31920493b58eca5a2f 88823: c00a2d497b264dd172c99d15e3f97d72a84c63cf 88815: 433215b64047642fe4de15b7cee51006946e8323 88799: f17637dca2b9fb40b43c502303019494da6157ad 88767: 904af2fdd01b897fb7bc08815f37fc0b94f1fd23 88703: 7e673119a2ce87d1adac5548b48b8ed1616ab732 88575: 31b55bb28847f0b8de9f1d58e93870aa107f8db4 v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/smpboot_32.c | 30 ++---------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/[refs] b/[refs] index 2129ebcf9532..6ed355df42be 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 365c894c65b98da944992199ea24206f531674de +refs/heads/master: 4c07ad6950c2c7077c6d60a3ce83fdbbb553bd65 diff --git a/trunk/arch/x86/kernel/smpboot_32.c b/trunk/arch/x86/kernel/smpboot_32.c index fc1eb5255f66..c03596e11db8 100644 --- a/trunk/arch/x86/kernel/smpboot_32.c +++ b/trunk/arch/x86/kernel/smpboot_32.c @@ -699,44 +699,18 @@ void cpu_exit_clear(void) } #endif -struct warm_boot_cpu_info { - struct completion *complete; - struct work_struct task; - int apicid; - int cpu; -}; - -static void __cpuinit do_warm_boot_cpu(struct work_struct *work) -{ - struct warm_boot_cpu_info *info = - container_of(work, struct warm_boot_cpu_info, task); - do_boot_cpu(info->apicid, info->cpu); - complete(info->complete); -} - static void __cpuinit __smp_prepare_cpu(int cpu) { - DECLARE_COMPLETION_ONSTACK(done); - struct warm_boot_cpu_info info; int apicid; apicid = per_cpu(x86_cpu_to_apicid, cpu); - info.complete = &done; - info.apicid = apicid; - info.cpu = cpu; - INIT_WORK(&info.task, do_warm_boot_cpu); - /* init low mem mapping */ 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(); - if (!keventd_up() || current_is_keventd()) - info.task.func(&info.task); - else { - schedule_work(&info.task); - wait_for_completion(&done); - } + + do_boot_cpu(apicid, cpu); } static int boot_cpu_logical_apicid;