[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1203626456-3101-3-git-send-email-gcosta@redhat.com>
Date: Thu, 21 Feb 2008 17:40:56 -0300
From: Glauber Costa <gcosta@...hat.com>
To: linux-kernel@...r.kernel.org
Cc: akpm@...ux-foundation.org, glommer@...il.com, mingo@...e.hu,
pzijlstr@...hat.com, arjan@...radead.org,
Glauber Costa <gcosta@...hat.com>
Subject: [PATCH 2/2] make work have a static address in do_boot_cpu()
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 <gcosta@...hat.com>
---
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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists