This patch makes the work field in create_idle have a static address. Otherwise, being a stack variable, it can boild down the lockdep system.
Signed-off-by: Glauber Costa <[EMAIL PROTECTED]> --- arch/x86/kernel/smpboot_64.c | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c index f15b774..d79b7a8 100644 --- a/arch/x86/kernel/smpboot_64.c +++ b/arch/x86/kernel/smpboot_64.c @@ -545,6 +545,7 @@ static void __cpuinit do_fork_idle(struc complete(&c_idle->done); } +static DEFINE_PER_CPU(struct create_idle, cpu_idle); /* * Boot one CPU. */ @@ -553,12 +554,12 @@ static int __cpuinit do_boot_cpu(int cpu unsigned long boot_error; int timeout; unsigned long start_rip; - struct create_idle create_idle = { - .work = __WORK_INITIALIZER(create_idle.work, do_fork_idle), - .cpu = cpu, - .done = COMPLETION_INITIALIZER_ONSTACK(create_idle.done), - }; - struct create_idle *c_idle = &create_idle; + struct create_idle *c_idle = &per_cpu(cpu_idle, cpu); + struct work_struct *c_idle_work = &c_idle->work; + + INIT_WORK(c_idle_work, do_fork_idle); + c_idle->cpu = cpu; + init_completion(&c_idle->done); /* allocate memory for gdts of secondary cpus. Hotplug is considered */ if (!cpu_gdt_descr[cpu].address && -- 1.4.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/