Messages in this thread | | | Date | Thu, 5 Nov 2009 16:22:41 +0100 | From | Oleg Nesterov <> | Subject | Re: 2.6.32-rc5-mmotm1101 - lockdep whinge during early boot |
| |
On 11/05, Thomas Gleixner wrote: > > On Thu, 5 Nov 2009, Oleg Nesterov wrote: > > > Oleg (CC'd) made workqueues use cpu_maps_update_begin() instead of the > > > more obvious get_online_cpus() in 3da1c84c00c7e5f. Reverting that seems like > > > a bad idea. > > > > Even if create_workueue() used get_online_cpus() instead of cpu_add_remove_lock, > > we have the same problem: _cpu_up() takes cpu_hotplug.lock which is needed for > > get_online_cpus(). The dependency above becomes: > > > > cpu_up()->clocksource_change_rating() takes clocksource_mutex under > > cpu_hotplug.lock (cpu_hotplug_begin) > > > > clocksource_done_booting()->create_workueue() takes cpu_hotplug.lock > > (get_online_cpus) under clocksource_mutex > > Hmm, we fixed all this lock madness in mainline already. > clocksource_done_booting() does not longer call > create_workqueue(). How got this code reverted in motm ?
I don't understand this code at all. But this is what I see in Linus's tree:
clocksource_done_booting clocksource_select timekeeping_notify stop_machine stop_machine_create
OTOH, I don't see where native_cpu_up() path calls clocksource_change_rating(), perhaps this was changed in -mm.
Oleg.
| |