Ingo Molnar wrote: > * Glauber Costa wrote: > >> Hi, >> >> While testing with hotplugging cpus today, I've came across a stack >> trace generated by lockdep. The reason for that is that do_boot_cpu() >> in smpboot_64.c ends up initializing a struct work_struct variable in >> the stack. > > hm, could you post that trace? Sure. To make it clearer where the problem is, I also added the attached patch to my testing. Trace is: (note the call to do_fork_idle) INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. key: ffff81003bdf9d18, name: c_idle.work Pid: 11, comm: events/1 Not tainted 2.6.25-rc2 #129 Call Trace: [] static_obj+0x5d/0x74 [] __lock_acquire+0x8b5/0xc3e [] run_workqueue+0x84/0x1df [] lock_acquire+0x91/0xbc [] run_workqueue+0x95/0x1df [] do_fork_idle+0x0/0x20 [] run_workqueue+0xd9/0x1df [] worker_thread+0x90/0x9b [] autoremove_wake_function+0x0/0x2e [] worker_thread+0x0/0x9b [] kthread+0x47/0x73 [] trace_hardirqs_on_thunk+0x35/0x3a [] child_rip+0xa/0x12 [] restore_args+0x0/0x34 [] kthreadd+0x14a/0x16f [] kthreadd+0x14a/0x16f [] kthread+0x0/0x73 [] child_rip+0x0/0x12