* tip-bot for Thomas Gleixner wrote: > Commit-ID: 8cab02dc3c58a12235c6d463ce684dded9696848 > Gitweb: http://git.kernel.org/tip/8cab02dc3c58a12235c6d463ce684dded9696848 > Author: Thomas Gleixner > AuthorDate: Thu, 20 Aug 2009 18:19:45 +0200 > Committer: Thomas Gleixner > CommitDate: Fri, 21 Aug 2009 21:13:37 +0200 > > x86: Do not unregister PIT clocksource on PIT oneshot setup/shutdown even after this fix, -tip testing found yet another circular locking bug, on a 32-bit Core2 laptop: [ 1.198605] initcall cpufreq_gov_performance_init+0x0/0x10 returned 0 after 0 usecs [ 1.198736] calling init_acpi_pm_clocksource+0x0/0x250 @ 1 [ 1.233442] Switching to clocksource acpi_pm [ 1.233626] [ 1.233627] ======================================================= [ 1.233798] [ INFO: possible circular locking dependency detected ] [ 1.233889] 2.6.31-rc6-tip-01322-gd685ec8-dirty #7600 [ 1.233977] ------------------------------------------------------- [ 1.233999] swapper/1 is trying to acquire lock: [ 1.233999] (cpu_add_remove_lock){+.+.+.}, at: [] cpu_maps_update_begin+0xf/0x20 [ 1.233999] [ 1.233999] but task is already holding lock: [ 1.233999] (setup_lock){+.+.+.}, at: [] stop_machine_create+0x12/0xa0 [ 1.233999] [ 1.233999] which lock already depends on the new lock. [ 1.233999] [ 1.233999] [ 1.233999] the existing dependency chain (in reverse order) is: [ 1.233999] [ 1.233999] -> #3 (setup_lock){+.+.+.}: [ 1.233999] [] validate_chain+0xad0/0x1130 [ 1.233999] [] __lock_acquire+0x341/0x690 [ 1.233999] [] lock_acquire+0x8e/0xf0 [ 1.233999] [] __mutex_lock_common+0x49/0x3d0 [ 1.233999] [] mutex_lock_nested+0x29/0x40 [ 1.233999] [] stop_machine_create+0x12/0xa0 [ 1.233999] [] stop_machine+0x1b/0x50 [ 1.233999] [] timekeeping_notify+0x19/0x20 [ 1.233999] [] clocksource_select+0x84/0xb0 [ 1.233999] [] clocksource_register+0x22/0x1e0 [ 1.233999] [] init_acpi_pm_clocksource+0x16c/0x250 [ 1.233999] [] do_one_initcall+0x27/0x190 [ 1.233999] [] kernel_init+0x14a/0x1a0 [ 1.233999] [] kernel_thread_helper+0x7/0x14 [ 1.233999] [ 1.233999] -> #2 (clocksource_mutex){+.+.+.}: [ 1.233999] [] validate_chain+0xad0/0x1130 [ 1.233999] [] __lock_acquire+0x341/0x690 [ 1.233999] [] lock_acquire+0x8e/0xf0 [ 1.233999] [] __mutex_lock_common+0x49/0x3d0 [ 1.233999] [] mutex_lock_nested+0x29/0x40 [ 1.233999] [] clocksource_change_rating+0x1d/0x40 [ 1.233999] [] mark_tsc_unstable+0x4c/0x50 [ 1.233999] [] check_tsc_sync_source+0x10f/0x120 [ 1.233999] [] native_cpu_up+0x423/0x800 [ 1.233999] [] _cpu_up+0x89/0x110 [ 1.233999] [] cpu_up+0x49/0x70 [ 1.233999] [] kernel_init+0xcc/0x1a0 [ 1.233999] [] kernel_thread_helper+0x7/0x14 [ 1.233999] [ 1.233999] -> #1 (cpu_hotplug.lock){+.+.+.}: [ 1.233999] [] validate_chain+0xad0/0x1130 [ 1.233999] [] __lock_acquire+0x341/0x690 [ 1.233999] [] lock_acquire+0x8e/0xf0 [ 1.233999] [] __mutex_lock_common+0x49/0x3d0 [ 1.233999] [] mutex_lock_nested+0x29/0x40 [ 1.233999] [] cpu_hotplug_begin+0x1d/0x50 [ 1.233999] [] _cpu_up+0x5b/0x110 [ 1.233999] [] cpu_up+0x49/0x70 [ 1.233999] [] kernel_init+0xcc/0x1a0 [ 1.233999] [] kernel_thread_helper+0x7/0x14 [ 1.233999] [ 1.233999] -> #0 (cpu_add_remove_lock){+.+.+.}: [ 1.233999] [] validate_chain+0x1115/0x1130 [ 1.233999] [] __lock_acquire+0x341/0x690 [ 1.233999] [] lock_acquire+0x8e/0xf0 [ 1.233999] [] __mutex_lock_common+0x49/0x3d0 [ 1.233999] [] mutex_lock_nested+0x29/0x40 [ 1.233999] [] cpu_maps_update_begin+0xf/0x20 [ 1.233999] [] __create_workqueue_key+0x100/0x1f0 [ 1.233999] [] stop_machine_create+0x42/0xa0 [ 1.233999] [] stop_machine+0x1b/0x50 [ 1.233999] [] timekeeping_notify+0x19/0x20 [ 1.233999] [] clocksource_select+0x84/0xb0 [ 1.233999] [] clocksource_register+0x22/0x1e0 [ 1.233999] [] init_acpi_pm_clocksource+0x16c/0x250 [ 1.233999] [] do_one_initcall+0x27/0x190 [ 1.233999] [] kernel_init+0x14a/0x1a0 [ 1.233999] [] kernel_thread_helper+0x7/0x14 [ 1.233999] [ 1.233999] other info that might help us debug this: [ 1.233999] [ 1.233999] 2 locks held by swapper/1: [ 1.233999] #0: (clocksource_mutex){+.+.+.}, at: [] clocksource_register+0x16/0x1e0 [ 1.233999] #1: (setup_lock){+.+.+.}, at: [] stop_machine_create+0x12/0xa0 [ 1.233999] [ 1.233999] stack backtrace: [ 1.233999] Pid: 1, comm: swapper Not tainted 2.6.31-rc6-tip-01322-gd685ec8-dirty #7600 [ 1.233999] Call Trace: [ 1.233999] [] print_circular_bug+0xbb/0xd0 [ 1.233999] [] validate_chain+0x1115/0x1130 [ 1.233999] [] __lock_acquire+0x341/0x690 [ 1.233999] [] lock_acquire+0x8e/0xf0 [ 1.233999] [] ? cpu_maps_update_begin+0xf/0x20 [ 1.233999] [] __mutex_lock_common+0x49/0x3d0 [ 1.233999] [] ? cpu_maps_update_begin+0xf/0x20 [ 1.233999] [] ? mutex_unlock+0x8/0x10 [ 1.233999] [] ? pcpu_alloc+0x30b/0x400 [ 1.233999] [] ? kmemleak_alloc+0x2b/0x60 [ 1.233999] [] mutex_lock_nested+0x29/0x40 [ 1.233999] [] ? cpu_maps_update_begin+0xf/0x20 [ 1.233999] [] cpu_maps_update_begin+0xf/0x20 [ 1.233999] [] __create_workqueue_key+0x100/0x1f0 [ 1.233999] [] ? mutex_lock_nested+0x29/0x40 [ 1.233999] [] stop_machine_create+0x42/0xa0 [ 1.233999] [] stop_machine+0x1b/0x50 [ 1.233999] [] ? change_clocksource+0x0/0x70 [ 1.233999] [] timekeeping_notify+0x19/0x20 [ 1.233999] [] clocksource_select+0x84/0xb0 [ 1.233999] [] clocksource_register+0x22/0x1e0 [ 1.233999] [] ? __const_udelay+0x2e/0x30 [ 1.233999] [] init_acpi_pm_clocksource+0x16c/0x250 [ 1.233999] [] ? ktime_get+0x5f/0x110 [ 1.233999] [] ? init_acpi_pm_clocksource+0x0/0x250 [ 1.233999] [] do_one_initcall+0x27/0x190 [ 1.233999] [] ? init_acpi_pm_clocksource+0x0/0x250 [ 1.233999] [] kernel_init+0x14a/0x1a0 [ 1.233999] [] ? kernel_init+0x0/0x1a0 [ 1.233999] [] kernel_thread_helper+0x7/0x14 [ 1.234233] initcall init_acpi_pm_clocksource+0x0/0x250 returned 0 after 35202 usecs [ 1.234365] calling ssb_modinit+0x0/0x60 @ 1 [ 1.234455] Switched to high resolution mode on CPU 0 config and full bootlog attached. Ingo