Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 88831
b: refs/heads/master
c: 4c07ad6
h: refs/heads/master
i:
  88829: f951a9a
  88827: 00509cc
  88823: c00a2d4
  88815: 433215b
  88799: f17637d
  88767: 904af2f
  88703: 7e67311
  88575: 31b55bb
v: v3
  • Loading branch information
Glauber de Oliveira Costa authored and Ingo Molnar committed Apr 17, 2008
1 parent 73cf70c commit 1c4cf3a
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 365c894c65b98da944992199ea24206f531674de
refs/heads/master: 4c07ad6950c2c7077c6d60a3ce83fdbbb553bd65
30 changes: 2 additions & 28 deletions trunk/arch/x86/kernel/smpboot_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 1c4cf3a

Please sign in to comment.