macintosh/windfarm: possible circular locking dependency detected

2013-02-08 Thread Aaro Koskinen
Hi,

On iMac G5 (the first model, windfarm_pm81 reports "model 3"), enabling
LOCKDEP results in the following warnings when overtemp condition is
encountered.

The kernel is 3.8-rc6+ / 6bacaa9.

[ 7060.058340] windfarm: Clamping CPU frequency to minimum !
[ 7060.229688] 
[ 7060.229756] ==
[ 7060.229799] [ INFO: possible circular locking dependency detected ]
[ 7060.229847] 3.8.0-rc6-imac-00113-g6bacaa9 #2 Not tainted
[ 7060.229882] ---
[ 7060.229923] kwindfarm/475 is trying to acquire lock:
[ 7060.229958]  (wf_lock){+.+.+.}, at: [] 
.wf_set_overtemp+0x34/0xb0
[ 7060.230070] 
[ 7060.230070] but task is already holding lock:
[ 7060.230111]  ((wf_client_list).rwsem){.+.+.+}, at: [] 
.__blocking_notifier_call_chain+0x78/0x110
[ 7060.230219] 
[ 7060.230219] which lock already depends on the new lock.
[ 7060.230219] 
[ 7060.230275] 
[ 7060.230275] the existing dependency chain (in reverse order) is:
[ 7060.230326] 
[ 7060.230326] -> #1 ((wf_client_list).rwsem){.+.+.+}:
[ 7060.230407][] .down_read+0x58/0xa0
[ 7060.230463][] 
.__blocking_notifier_call_chain+0x78/0x110
[ 7060.230521][] .wf_register_client+0xb0/0x1b0
[ 7060.230573][] .wf_smu_probe+0x1c/0x40
[ 7060.230621][] .platform_drv_probe+0x30/0x50
[ 7060.230681][] .driver_probe_device+0xa8/0x290
[ 7060.230735][] .__driver_attach+0x10c/0x110
[ 7060.230787][] .bus_for_each_dev+0x7c/0xe0
[ 7060.230837][] .driver_attach+0x28/0x40
[ 7060.230888][] .bus_add_driver+0x1f8/0x330
[ 7060.230937][] .driver_register+0xa4/0x230
[ 7060.230989][] .platform_driver_register+0x60/0x80
[ 7060.231044][] .wf_smu_init+0x8c/0xa8
[ 7060.231098][] .do_one_initcall+0x168/0x1e0
[ 7060.231151][] .kernel_init_freeable+0x134/0x204
[ 7060.231209][] .kernel_init+0x1c/0x120
[ 7060.231256][] .ret_from_kernel_thread+0x64/0xc4
[ 7060.231311] 
[ 7060.231311] -> #0 (wf_lock){+.+.+.}:
[ 7060.231381][] .lock_acquire+0x5c/0x90
[ 7060.231434][] .mutex_lock_nested+0x90/0x3b0
[ 7060.231488][] .wf_set_overtemp+0x34/0xb0
[ 7060.231539][] .wf_smu_notify+0x914/0xf90
[ 7060.231590][] .notifier_call_chain+0xcc/0x1f0
[ 7060.231643][] 
.__blocking_notifier_call_chain+0x94/0x110
[ 7060.231699][] .wf_thread_func+0x88/0x150
[ 7060.231747][] .kthread+0xec/0x100
[ 7060.231794][] .ret_from_kernel_thread+0x64/0xc4
[ 7060.231850] 
[ 7060.231850] other info that might help us debug this:
[ 7060.231850] 
[ 7060.231905]  Possible unsafe locking scenario:
[ 7060.231905] 
[ 7060.231945]CPU0CPU1
[ 7060.231976]
[ 7060.232007]   lock((wf_client_list).rwsem);
[ 7060.232054]lock(wf_lock);
[ 7060.232104]lock((wf_client_list).rwsem);
[ 7060.232160]   lock(wf_lock);
[ 7060.233707] 
[ 7060.233707]  *** DEADLOCK ***
[ 7060.233707] 
[ 7060.238238] 1 lock held by kwindfarm/475:
[ 7060.239756]  #0:  ((wf_client_list).rwsem){.+.+.+}, at: [] 
.__blocking_notifier_call_chain+0x78/0x110
[ 7060.241354] 
[ 7060.241354] stack backtrace:
[ 7060.244453] Call Trace:
[ 7060.246001] [c000564534f0] [c0012978] .show_stack+0x78/0x1b0 
(unreliable)
[ 7060.247582] [c000564535a0] [c06d09c8] 
.print_circular_bug+0x2e8/0x320
[ 7060.249157] [c00056453650] [c00a36c0] 
.__lock_acquire+0x17b0/0x1a70
[ 7060.250734] [c000564537d0] [c00a3efc] .lock_acquire+0x5c/0x90
[ 7060.252305] [c00056453870] [c06cb5b0] 
.mutex_lock_nested+0x90/0x3b0
[ 7060.253879] [c00056453960] [c0447b54] .wf_set_overtemp+0x34/0xb0
[ 7060.255460] [c000564539f0] [c044a844] .wf_smu_notify+0x914/0xf90
[ 7060.257019] [c00056453ad0] [c0084e2c] 
.notifier_call_chain+0xcc/0x1f0
[ 7060.258598] [c00056453b80] [c00851c4] 
.__blocking_notifier_call_chain+0x94/0x110
[ 7060.260169] [c00056453c30] [c0448a18] .wf_thread_func+0x88/0x150
[ 7060.261725] [c00056453cc0] [c007c22c] .kthread+0xec/0x100
[ 7060.263267] [c00056453e30] [c0008aa0] 
.ret_from_kernel_thread+0x64/0xc4
[ 7060.270273] windfarm: Overtemp condition detected !
[ 7062.033879] windfarm: CPU frequency unclamped !
[ 7062.035508] windfarm: Overtemp condition cleared !
[ 7221.058391] windfarm: Clamping CPU frequency to minimum !
[ 7221.196337] windfarm: Overtemp condition detected !
[ 7223.03] windfarm: CPU frequency unclamped !
[ 7223.067554] windfarm: Overtemp condition cleared !

A.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


macintosh/windfarm: possible circular locking dependency detected

2013-02-08 Thread Aaro Koskinen
Hi,

On iMac G5 (the first model, windfarm_pm81 reports model 3), enabling
LOCKDEP results in the following warnings when overtemp condition is
encountered.

The kernel is 3.8-rc6+ / 6bacaa9.

[ 7060.058340] windfarm: Clamping CPU frequency to minimum !
[ 7060.229688] 
[ 7060.229756] ==
[ 7060.229799] [ INFO: possible circular locking dependency detected ]
[ 7060.229847] 3.8.0-rc6-imac-00113-g6bacaa9 #2 Not tainted
[ 7060.229882] ---
[ 7060.229923] kwindfarm/475 is trying to acquire lock:
[ 7060.229958]  (wf_lock){+.+.+.}, at: [c0447b54] 
.wf_set_overtemp+0x34/0xb0
[ 7060.230070] 
[ 7060.230070] but task is already holding lock:
[ 7060.230111]  ((wf_client_list).rwsem){.+.+.+}, at: [c00851a8] 
.__blocking_notifier_call_chain+0x78/0x110
[ 7060.230219] 
[ 7060.230219] which lock already depends on the new lock.
[ 7060.230219] 
[ 7060.230275] 
[ 7060.230275] the existing dependency chain (in reverse order) is:
[ 7060.230326] 
[ 7060.230326] - #1 ((wf_client_list).rwsem){.+.+.+}:
[ 7060.230407][c06cbf98] .down_read+0x58/0xa0
[ 7060.230463][c00851a8] 
.__blocking_notifier_call_chain+0x78/0x110
[ 7060.230521][c0447d70] .wf_register_client+0xb0/0x1b0
[ 7060.230573][c0449f0c] .wf_smu_probe+0x1c/0x40
[ 7060.230621][c042e7d0] .platform_drv_probe+0x30/0x50
[ 7060.230681][c042c868] .driver_probe_device+0xa8/0x290
[ 7060.230735][c042cb5c] .__driver_attach+0x10c/0x110
[ 7060.230787][c042a10c] .bus_for_each_dev+0x7c/0xe0
[ 7060.230837][c042c1c8] .driver_attach+0x28/0x40
[ 7060.230888][c042bba8] .bus_add_driver+0x1f8/0x330
[ 7060.230937][c042d4f4] .driver_register+0xa4/0x230
[ 7060.230989][c042eb10] .platform_driver_register+0x60/0x80
[ 7060.231044][c0949924] .wf_smu_init+0x8c/0xa8
[ 7060.231098][c0009aa8] .do_one_initcall+0x168/0x1e0
[ 7060.231151][c0927b70] .kernel_init_freeable+0x134/0x204
[ 7060.231209][c000a1bc] .kernel_init+0x1c/0x120
[ 7060.231256][c0008aa0] .ret_from_kernel_thread+0x64/0xc4
[ 7060.231311] 
[ 7060.231311] - #0 (wf_lock){+.+.+.}:
[ 7060.231381][c00a3efc] .lock_acquire+0x5c/0x90
[ 7060.231434][c06cb5b0] .mutex_lock_nested+0x90/0x3b0
[ 7060.231488][c0447b54] .wf_set_overtemp+0x34/0xb0
[ 7060.231539][c044a844] .wf_smu_notify+0x914/0xf90
[ 7060.231590][c0084e2c] .notifier_call_chain+0xcc/0x1f0
[ 7060.231643][c00851c4] 
.__blocking_notifier_call_chain+0x94/0x110
[ 7060.231699][c0448a18] .wf_thread_func+0x88/0x150
[ 7060.231747][c007c22c] .kthread+0xec/0x100
[ 7060.231794][c0008aa0] .ret_from_kernel_thread+0x64/0xc4
[ 7060.231850] 
[ 7060.231850] other info that might help us debug this:
[ 7060.231850] 
[ 7060.231905]  Possible unsafe locking scenario:
[ 7060.231905] 
[ 7060.231945]CPU0CPU1
[ 7060.231976]
[ 7060.232007]   lock((wf_client_list).rwsem);
[ 7060.232054]lock(wf_lock);
[ 7060.232104]lock((wf_client_list).rwsem);
[ 7060.232160]   lock(wf_lock);
[ 7060.233707] 
[ 7060.233707]  *** DEADLOCK ***
[ 7060.233707] 
[ 7060.238238] 1 lock held by kwindfarm/475:
[ 7060.239756]  #0:  ((wf_client_list).rwsem){.+.+.+}, at: [c00851a8] 
.__blocking_notifier_call_chain+0x78/0x110
[ 7060.241354] 
[ 7060.241354] stack backtrace:
[ 7060.244453] Call Trace:
[ 7060.246001] [c000564534f0] [c0012978] .show_stack+0x78/0x1b0 
(unreliable)
[ 7060.247582] [c000564535a0] [c06d09c8] 
.print_circular_bug+0x2e8/0x320
[ 7060.249157] [c00056453650] [c00a36c0] 
.__lock_acquire+0x17b0/0x1a70
[ 7060.250734] [c000564537d0] [c00a3efc] .lock_acquire+0x5c/0x90
[ 7060.252305] [c00056453870] [c06cb5b0] 
.mutex_lock_nested+0x90/0x3b0
[ 7060.253879] [c00056453960] [c0447b54] .wf_set_overtemp+0x34/0xb0
[ 7060.255460] [c000564539f0] [c044a844] .wf_smu_notify+0x914/0xf90
[ 7060.257019] [c00056453ad0] [c0084e2c] 
.notifier_call_chain+0xcc/0x1f0
[ 7060.258598] [c00056453b80] [c00851c4] 
.__blocking_notifier_call_chain+0x94/0x110
[ 7060.260169] [c00056453c30] [c0448a18] .wf_thread_func+0x88/0x150
[ 7060.261725] [c00056453cc0] [c007c22c] .kthread+0xec/0x100
[ 7060.263267] [c00056453e30] [c0008aa0] 
.ret_from_kernel_thread+0x64/0xc4
[ 7060.270273] windfarm: Overtemp condition detected !
[ 7062.033879] windfarm: CPU frequency unclamped !
[ 7062.035508] windfarm: Overtemp condition cleared !
[ 7221.058391] windfarm: Clamping CPU frequency to