lkml.org 
[lkml]   [2011]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectBusy looping iwl3945 driver
From
Hi

Today I've noticed 100% CPU occupied by kworker thread - which
appeared to be the result of some iwl3945 driver interaction.

Here are some trace of some tasks from that moment.
It looked like when I've then even tried to run 'mc' of 'ifconfig' -
they could not start since some device lock was kept busy.

The problem was most probably caused by doing suspend when attached to
the wireless network and resuming in wired docking station,
without having the previous wireless AP available.

My hw - T61, 4G, C2D, iwl3945 wifi, X86_64 kernel 3.2.0-rc3
Only reboot fixed this problem.


NetworkManager D 0000000000000000 0 648 1 0x00000004
ffff8801301157e8 0000000000000046 ffffffff814d9fe4 0000000000000000
ffff8801301157f8 ffff88012c968000 0000000000000000 ffff880130115fd8
ffff880130115fd8 ffff880130115fd8 ffffffff81a0d020 ffff88012c968000
Call Trace:
[<ffffffff814d9fe4>] ? __schedule+0x994/0xb50
[<ffffffff814da23f>] schedule+0x3f/0x60
[<ffffffff814db1c2>] mutex_lock_nested+0x1b2/0x3f0
[<ffffffffa033984f>] ? ieee80211_ifa_changed+0x9f/0x150 [mac80211]
[<ffffffffa033984f>] ? ieee80211_ifa_changed+0x9f/0x150 [mac80211]
[<ffffffffa033984f>] ieee80211_ifa_changed+0x9f/0x150 [mac80211]
[<ffffffff814e17e3>] notifier_call_chain+0x93/0x100
[<ffffffff81082cf8>] __blocking_notifier_call_chain+0x78/0xb0
[<ffffffff81082d46>] blocking_notifier_call_chain+0x16/0x20
[<ffffffff814856b6>] __inet_del_ifa+0xb6/0x290
[<ffffffff8148633e>] inet_rtm_deladdr+0x10e/0x160
[<ffffffff81436544>] rtnetlink_rcv_msg+0x124/0x2e0
[<ffffffff81436420>] ? __rtnl_unlock+0x20/0x20
[<ffffffff81446c49>] netlink_rcv_skb+0xa9/0xd0
[<ffffffff81434465>] rtnetlink_rcv+0x25/0x40
[<ffffffff81446580>] netlink_unicast+0x2c0/0x310
[<ffffffff81446886>] netlink_sendmsg+0x2b6/0x310
[<ffffffff81410458>] ? sock_update_classid+0xb8/0x1f0
[<ffffffff81409cee>] sock_sendmsg+0x10e/0x1e0
[<ffffffff8140babd>] ? sock_recvmsg+0x18d/0x210
[<ffffffff8112dce3>] ? might_fault+0x53/0xb0
[<ffffffff8112dd2c>] ? might_fault+0x9c/0xb0
[<ffffffff8112dce3>] ? might_fault+0x53/0xb0
[<ffffffff814191c6>] ? verify_iovec+0x56/0xd0
[<ffffffff8140c116>] __sys_sendmsg+0x376/0x380
[<ffffffff81161458>] ? fget_light+0x48/0x3b0
[<ffffffff811614f1>] ? fget_light+0xe1/0x3b0
[<ffffffff81161458>] ? fget_light+0x48/0x3b0
[<ffffffff8118149f>] ? mntput+0x1f/0x30
[<ffffffff8140db19>] sys_sendmsg+0x49/0x90
[<ffffffff814e562b>] system_call_fastpath+0x16/0x1b



avahi-daemon D 0000000000000246 0 667 1 0x00000000
ffff880127df5ba8 0000000000000046 0000000000000000 0000000000000000
ffff880127df5bb8 ffff880128be4600 0000000000000000 ffff880127df5fd8
ffff880127df5fd8 ffff880127df5fd8 ffff88012ca72300 ffff880128be4600
Call Trace:
[<ffffffff814da23f>] schedule+0x3f/0x60
[<ffffffff814db1c2>] mutex_lock_nested+0x1b2/0x3f0
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] rtnl_lock+0x17/0x20
[<ffffffff8148ff6f>] ip_mc_leave_group+0x2f/0x180
[<ffffffff8145b2f4>] do_ip_setsockopt+0x6d4/0xdb0
[<ffffffff81409cee>] ? sock_sendmsg+0x10e/0x1e0
[<ffffffff8116a1fc>] ? pipe_write+0x2ec/0x5b0
[<ffffffff811a1b43>] ? fsnotify+0x93/0x600
[<ffffffff8140d6f1>] ? sys_sendto+0x101/0x130
[<ffffffff8145bad6>] ip_setsockopt+0x36/0xb0
[<ffffffff8147dcab>] udp_setsockopt+0x1b/0x40
[<ffffffff8140e574>] sock_common_setsockopt+0x14/0x20
[<ffffffff8140d8ff>] sys_setsockopt+0x7f/0xe0
[<ffffffff814e562b>] system_call_fastpath+0x16/0x1b


wpa_supplicant D 0000000000000246 0 770 1 0x00000000
ffff880127c17908 0000000000000046 0000000000000000 0000000000000000
ffff880127c17918 ffff880127e02300 0000000000000000 ffff880127c17fd8
ffff880127c17fd8 ffff880127c17fd8 ffff88012ca72300 ffff880127e02300
Call Trace:
[<ffffffff814da23f>] schedule+0x3f/0x60
[<ffffffff814db1c2>] mutex_lock_nested+0x1b2/0x3f0
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] rtnl_lock+0x17/0x20
[<ffffffffa02ec1d5>] nl80211_pre_doit+0xf5/0x190 [cfg80211]
[<ffffffff81447263>] genl_rcv_msg+0x1c3/0x250
[<ffffffff814470a0>] ? genl_rcv+0x40/0x40
[<ffffffff81446c49>] netlink_rcv_skb+0xa9/0xd0
[<ffffffff81447085>] genl_rcv+0x25/0x40
[<ffffffff81446580>] netlink_unicast+0x2c0/0x310
[<ffffffff81446886>] netlink_sendmsg+0x2b6/0x310
[<ffffffff81410458>] ? sock_update_classid+0xb8/0x1f0
[<ffffffff81409cee>] sock_sendmsg+0x10e/0x1e0
[<ffffffff8140babd>] ? sock_recvmsg+0x18d/0x210
[<ffffffff8112dce3>] ? might_fault+0x53/0xb0
[<ffffffff8112dd2c>] ? might_fault+0x9c/0xb0
[<ffffffff8112dce3>] ? might_fault+0x53/0xb0
[<ffffffff814191c6>] ? verify_iovec+0x56/0xd0
[<ffffffff8140c116>] __sys_sendmsg+0x376/0x380
[<ffffffff8106a904>] ? set_current_blocked+0x34/0x60
[<ffffffff8100bee1>] ? fpu_finit+0x21/0x40
[<ffffffff8100bf4a>] ? init_fpu+0x4a/0x180
[<ffffffff8100d198>] ? restore_i387_xstate+0xc8/0x1d0
[<ffffffff811615bf>] ? fget_light+0x1af/0x3b0
[<ffffffff814ddedb>] ? _raw_spin_unlock_irq+0x3b/0x60
[<ffffffff8140db19>] sys_sendmsg+0x49/0x90
[<ffffffff814e562b>] system_call_fastpath+0x16/0x1b



ntpd D 0000000000000246 0 21324 1 0x00000000
ffff880127adfca8 0000000000000046 0000000000000000 0000000000000000
ffff880127adfcb8 ffff880127f5c600 0000000000000000 ffff880127adffd8
ffff880127adffd8 ffff880127adffd8 ffff8800379e4600 ffff880127f5c600
Call Trace:
[<ffffffff814da23f>] schedule+0x3f/0x60
[<ffffffff814db1c2>] mutex_lock_nested+0x1b2/0x3f0
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] rtnl_lock+0x17/0x20
[<ffffffff81428165>] dev_ioctl+0x3c5/0x660
[<ffffffff81090b80>] ? lockdep_init_map+0xf0/0x590
[<ffffffff814092ad>] sock_do_ioctl+0x5d/0x70
[<ffffffff81409339>] sock_ioctl+0x79/0x2f0
[<ffffffff811736f8>] do_vfs_ioctl+0x98/0x570
[<ffffffff814dddf5>] ? _raw_spin_unlock+0x35/0x60
[<ffffffff8115d7cd>] ? fd_install+0x7d/0x100
[<ffffffff811615bf>] ? fget_light+0x1af/0x3b0
[<ffffffff81173c61>] sys_ioctl+0x91/0xa0
[<ffffffff814e562b>] system_call_fastpath+0x16/0x1b



Here I've tried 'mc' and rmmod of iwl3945 (which had in fact open count == 0)



mc D 0000000000000000 0 12325 12174 0x00000000
ffff880007a77ca8 0000000000000046 ffffffff814d9fe4 0000000000000000
ffff880007a77cb8 ffff880037918000 0000000000000000 ffff880007a77fd8
ffff880007a77fd8 ffff880007a77fd8 ffffffff81a0d020 ffff880037918000
Call Trace:
[<ffffffff814d9fe4>] ? __schedule+0x994/0xb50
[<ffffffff814da23f>] schedule+0x3f/0x60
[<ffffffff814db1c2>] mutex_lock_nested+0x1b2/0x3f0
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] ? rtnl_lock+0x17/0x20
[<ffffffff81434437>] rtnl_lock+0x17/0x20
[<ffffffff81428165>] dev_ioctl+0x3c5/0x660
[<ffffffff81090b80>] ? lockdep_init_map+0xf0/0x590
[<ffffffff814092ad>] sock_do_ioctl+0x5d/0x70
[<ffffffff81409339>] sock_ioctl+0x79/0x2f0
[<ffffffff811736f8>] do_vfs_ioctl+0x98/0x570
[<ffffffff814dddf5>] ? _raw_spin_unlock+0x35/0x60
[<ffffffff8115d7cd>] ? fd_install+0x7d/0x100
[<ffffffff811615bf>] ? fget_light+0x1af/0x3b0
[<ffffffff81173c61>] sys_ioctl+0x91/0xa0
[<ffffffff814e562b>] system_call_fastpath+0x16/0x1b
rmmod D 0000000000000000 0 12340 22112 0x00000000
ffff880051811bf8 0000000000000046 ffffffff814d9fe4 ffffffff814d5fd1
0000000000000001 ffff8800b0cd8000 0000000000000046 ffff880051811fd8
ffff880051811fd8 ffff880051811fd8 ffff880136d44600 ffff8800b0cd8000
Call Trace:
[<ffffffff814d9fe4>] ? __schedule+0x994/0xb50
[<ffffffff814d5fd1>] ? __slab_free+0x233/0x3aa
[<ffffffff814da23f>] schedule+0x3f/0x60
[<ffffffff814dd265>] rwsem_down_failed_common+0xc5/0x160
[<ffffffff814dd313>] rwsem_down_write_failed+0x13/0x20
[<ffffffff812d2733>] call_rwsem_down_write_failed+0x13/0x20
[<ffffffff81082a07>] ? blocking_notifier_chain_unregister+0x27/0xe0
[<ffffffff814dc629>] ? down_write+0x89/0xb0
[<ffffffff81082a07>] ? blocking_notifier_chain_unregister+0x27/0xe0
[<ffffffff81082a07>] blocking_notifier_chain_unregister+0x27/0xe0
[<ffffffff81485cd8>] unregister_inetaddr_notifier+0x18/0x20
[<ffffffffa03380b6>] ieee80211_unregister_hw+0x46/0x120 [mac80211]
[<ffffffffa03b4779>] iwl3945_pci_remove+0x57/0x300 [iwl3945]
[<ffffffff814dde62>] ? _raw_spin_unlock_irqrestore+0x42/0x80
[<ffffffff812ee156>] pci_device_remove+0x46/0x110
[<ffffffff813926bc>] __device_release_driver+0x7c/0xe0
[<ffffffff81392fc8>] driver_detach+0xd8/0xe0
[<ffffffff813924f1>] bus_remove_driver+0x91/0x110
[<ffffffff813937b2>] driver_unregister+0x62/0xa0
[<ffffffff812ecf94>] pci_unregister_driver+0x44/0xc0
[<ffffffffa03b4a32>] iwl3945_exit+0x10/0x17 [iwl3945]
[<ffffffff810a169e>] sys_delete_module+0x16e/0x250
[<ffffffff8109647f>] ? trace_hardirqs_on_caller+0x1f/0x1b0
[<ffffffff814e562b>] system_call_fastpath+0x16/0x1b



Here is 'pert record -a -g'

# Overhead Command Shared Object
Symbol
# ........ ............... ..........................
...........................................
#
97.57% kworker/u:3 [kernel.kallsyms] [k] lock_timer_base
|
--- lock_timer_base
try_to_del_timer_sync
del_timer_sync
iwl3945_send_tx_power
ieee80211_bss_info_change_notify
ieee80211_sta_eosp_irqsafe
ieee80211_sta_eosp_irqsafe
ieee80211_stop_tx_ba_cb
ieee80211_stop_tx_ba_cb
ieee80211_stop_tx_ba_cb
ieee80211_stop_tx_ba_cb
process_one_work
worker_thread
kthread
kernel_thread_helper

0.38% kworker/u:3 [kernel.kallsyms] [k] ioread32
|
--- ioread32
|
|--37.76%-- iwl_legacy_send_bt_config
| iwl3945_rx_queue_restock
| iwl3945_irq_tasklet
| tasklet_action
| __do_softirq
| call_softirq
| do_softirq
| irq_exit
| __irqentry_text_start
| ret_from_intr
| try_to_del_timer_sync
| del_timer_sync
| iwl3945_send_tx_power
| ieee80211_bss_info_change_notify
| ieee80211_sta_eosp_irqsafe
| ieee80211_sta_eosp_irqsafe
| ieee80211_stop_tx_ba_cb
| ieee80211_stop_tx_ba_cb
| ieee80211_stop_tx_ba_cb
| ieee80211_stop_tx_ba_cb
| process_one_work
| worker_thread
| kthread
| kernel_thread_helper
|
|--31.13%-- iwl3945_irq_tasklet
| tasklet_action
| __do_softirq
| call_softirq
| do_softirq
| irq_exit
| |
| |--92.86%-- __irqentry_text_start
| | ret_from_intr
| | try_to_del_timer_sync
| | del_timer_sync
| | iwl3945_send_tx_power
| | ieee80211_bss_info_change_notify
| | ieee80211_sta_eosp_irqsafe
| | ieee80211_sta_eosp_irqsafe
| | ieee80211_stop_tx_ba_cb
| | ieee80211_stop_tx_ba_cb
| | ieee80211_stop_tx_ba_cb
| | ieee80211_stop_tx_ba_cb
| | process_one_work
| | worker_thread
| | kthread
| | kernel_thread_helper
| |
| --7.14%-- smp_apic_timer_interrupt
| apic_timer_interrupt
| try_to_del_timer_sync
| del_timer_sync
| iwl3945_send_tx_power
| ieee80211_bss_info_change_notify
| ieee80211_sta_eosp_irqsafe
| ieee80211_sta_eosp_irqsafe
| ieee80211_stop_tx_ba_cb
| ieee80211_stop_tx_ba_cb
| ieee80211_stop_tx_ba_cb
| ieee80211_stop_tx_ba_cb
| process_one_work
| worker_thread
| kthread
| kernel_thread_helper
|
--31.12%-- iwl_legacy_add_beacon_time
handle_irq_event_percpu
handle_irq_event
handle_edge_irq
handle_irq
__irqentry_text_start
ret_from_intr
try_to_del_timer_sync
del_timer_sync
iwl3945_send_tx_power
ieee80211_bss_info_change_notify
ieee80211_sta_eosp_irqsafe
ieee80211_sta_eosp_irqsafe
ieee80211_stop_tx_ba_cb
ieee80211_stop_tx_ba_cb
ieee80211_stop_tx_ba_cb
ieee80211_stop_tx_ba_cb
process_one_work
worker_thread
kthread
kernel_thread_helper

0.27% kworker/u:3 [kernel.kallsyms] [k] read_hpet
....

Zdenek


\
 
 \ /
  Last update: 2011-12-01 11:37    [W:0.104 / U:0.192 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site