Commit f86bf9b7 authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds

[PATCH] lockdep: clean up completion initializer in smpboot.c

Clean up lockdep on-stack-completion initializer.  (This also removes the
dependency on waitqueue_lock_key.)
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d6d897ce
...@@ -771,12 +771,10 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid) ...@@ -771,12 +771,10 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid)
unsigned long start_rip; unsigned long start_rip;
struct create_idle c_idle = { struct create_idle c_idle = {
.cpu = cpu, .cpu = cpu,
.done = COMPLETION_INITIALIZER(c_idle.done), .done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done),
}; };
DECLARE_WORK(work, do_fork_idle, &c_idle); DECLARE_WORK(work, do_fork_idle, &c_idle);
lockdep_set_class(&c_idle.done.wait.lock, &waitqueue_lock_key);
/* allocate memory for gdts of secondary cpus. Hotplug is considered */ /* allocate memory for gdts of secondary cpus. Hotplug is considered */
if (!cpu_gdt_descr[cpu].address && if (!cpu_gdt_descr[cpu].address &&
!(cpu_gdt_descr[cpu].address = get_zeroed_page(GFP_KERNEL))) { !(cpu_gdt_descr[cpu].address = get_zeroed_page(GFP_KERNEL))) {
......
...@@ -18,6 +18,9 @@ struct completion { ...@@ -18,6 +18,9 @@ struct completion {
#define COMPLETION_INITIALIZER(work) \ #define COMPLETION_INITIALIZER(work) \
{ 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) } { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) }
#define COMPLETION_INITIALIZER_ONSTACK(work) \
({ init_completion(&work); work; })
#define DECLARE_COMPLETION(work) \ #define DECLARE_COMPLETION(work) \
struct completion work = COMPLETION_INITIALIZER(work) struct completion work = COMPLETION_INITIALIZER(work)
...@@ -28,7 +31,7 @@ struct completion { ...@@ -28,7 +31,7 @@ struct completion {
*/ */
#ifdef CONFIG_LOCKDEP #ifdef CONFIG_LOCKDEP
# define DECLARE_COMPLETION_ONSTACK(work) \ # define DECLARE_COMPLETION_ONSTACK(work) \
struct completion work = ({ init_completion(&work); work; }) struct completion work = COMPLETION_INITIALIZER_ONSTACK(work)
#else #else
# define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work) # define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work)
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment