Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932257AbWHBV7o (ORCPT ); Wed, 2 Aug 2006 17:59:44 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932261AbWHBV7n (ORCPT ); Wed, 2 Aug 2006 17:59:43 -0400 Received: from mx1.redhat.com ([66.187.233.31]:64162 "EHLO mx1.redhat.com") by vger.kernel.org with ESMTP id S932255AbWHBV7l (ORCPT ); Wed, 2 Aug 2006 17:59:41 -0400 Date: Wed, 2 Aug 2006 17:59:32 -0400 From: Dave Jones To: Linux Kernel Cc: netdev@vger.kernel.org Subject: orinoco driver causes *lots* of lockdep spew Message-ID: <20060802215932.GE3639@redhat.com> Mail-Followup-To: Dave Jones , Linux Kernel , netdev@vger.kernel.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 23806 Lines: 410 Wow. Nearly 400 lines of debug spew, from a simple 'ifup eth1'. Dave ADDRCONF(NETDEV_UP): eth1: link is not ready eth1: New link status: Disconnected (0002) ====================================================== [ INFO: hard-safe -> hard-unsafe lock order detected ] ------------------------------------------------------ events/0/5 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire: (af_callback_keys + sk->sk_family){-.--}, at: [] sock_def_readable+0x19/0x6f and this task is already holding: (&priv->lock){++..}, at: [] orinoco_send_wevents+0x28/0x8b [orinoco] which would create a new lock dependency: (&priv->lock){++..} -> (af_callback_keys + sk->sk_family){-.--} but this new dependency connects a hard-irq-safe lock: (&priv->lock){++..} ... which became hard-irq-safe at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] orinoco_interrupt+0x4d/0xf49 [orinoco] [] handle_IRQ_event+0x2b/0x64 [] __do_IRQ+0xae/0x114 [] do_IRQ+0xf7/0x107 [] common_interrupt+0x64/0x65 to a hard-irq-unsafe lock: (af_callback_keys + sk->sk_family){-.--} ... which became hard-irq-unsafe at: ... [] lock_acquire+0x4a/0x69 [] _write_lock_bh+0x29/0x36 [] netlink_release+0x139/0x2ca [] sock_release+0x19/0x9b [] sock_close+0x33/0x3a [] __fput+0xc6/0x1a8 [] fput+0x13/0x16 [] filp_close+0x64/0x70 [] sys_close+0x93/0xb0 [] system_call+0x7d/0x83 other info that might help us debug this: 1 lock held by events/0/5: #0: (&priv->lock){++..}, at: [] orinoco_send_wevents+0x28/0x8b [orinoco] the hard-irq-safe lock's dependencies: -> (&priv->lock){++..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x2a/0x38 [] orinoco_init+0x934/0x966 [orinoco] [] register_netdevice+0xe6/0x375 [] register_netdev+0x5a/0x69 [] orinoco_cs_probe+0x3d7/0x475 [orinoco_cs] [] pcmcia_device_probe+0x7f/0x124 [] driver_probe_device+0x5b/0xb1 [] __driver_attach+0x88/0xdb [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x88/0x138 [] driver_register+0x8e/0x93 [] pcmcia_register_driver+0xd0/0xda [] 0xffffffff880a9024 [] sys_init_module+0x16f2/0x18b7 [] system_call+0x7d/0x83 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] orinoco_interrupt+0x4d/0xf49 [orinoco] [] handle_IRQ_event+0x2b/0x64 [] __do_IRQ+0xae/0x114 [] do_IRQ+0xf7/0x107 [] common_interrupt+0x64/0x65 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] orinoco_interrupt+0x4d/0xf49 [orinoco] [] handle_IRQ_event+0x2b/0x64 [] __do_IRQ+0xae/0x114 [] do_IRQ+0xf7/0x107 [] common_interrupt+0x64/0x65 [] scheduler_tick+0xc1/0x362 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x5c/0x62 [] apic_timer_interrupt+0x69/0x70 } ... key at: [] __key.22351+0x0/0xffffffffffff27fa [orinoco] -> (&cwq->lock){++..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] __queue_work+0x17/0x5e [] queue_work+0x4d/0x57 [] call_usermodehelper_keys+0x119/0x137 [] kobject_uevent+0x3e5/0x42e [] class_device_add+0x314/0x471 [] class_device_register+0x18/0x1d [] class_device_create+0xf7/0x129 [] vtconsole_class_init+0x74/0xbb [] init+0x1fc/0x3cd [] child_rip+0x7/0x12 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] __queue_work+0x17/0x5e [] queue_work+0x4d/0x57 [] kblockd_schedule_work+0x15/0x18 [] __cfq_slice_expired+0x63/0xe6 [] cfq_completed_request+0x116/0x154 [] elv_completed_request+0x38/0x85 [] __blk_put_request+0x35/0x9f [] end_that_request_last+0xea/0xf4 [] ide_end_request+0xf2/0x111 [] ide_dma_intr+0x70/0xb5 [] ide_intr+0x169/0x1df [] handle_IRQ_event+0x2b/0x64 [] __do_IRQ+0xae/0x114 [] do_IRQ+0xf7/0x107 [] common_interrupt+0x64/0x65 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] __queue_work+0x17/0x5e [] queue_work+0x4d/0x57 [] schedule_work+0x15/0x18 [] cursor_timer_handler+0x1b/0x38 [] run_timer_softirq+0x14b/0x1d5 [] __do_softirq+0x67/0xf5 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x5c/0x62 [] apic_timer_interrupt+0x69/0x70 } ... key at: [] __key.10352+0x0/0x8 -> (&q->lock){++..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irq+0x2a/0x38 [] wait_for_completion+0x2f/0xb3 [] keventd_create_kthread+0x35/0x6a [] kthread_create+0xca/0x153 [] migration_call+0x60/0x44f [] migration_init+0x27/0x4f [] init+0x69/0x3cd [] child_rip+0x7/0x12 in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] __wake_up+0x21/0x50 [] acpi_ec_gpe_handler+0x96/0xdb [] acpi_ev_gpe_dispatch+0x6e/0x160 [] acpi_ev_gpe_detect+0xae/0xff [] acpi_ev_sci_xrupt_handler+0x19/0x22 [] acpi_irq+0x10/0x1b [] handle_IRQ_event+0x2b/0x64 [] __do_IRQ+0xae/0x114 [] do_IRQ+0xf7/0x107 [] common_interrupt+0x64/0x65 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] complete+0x1b/0x4c [] wakeme_after_rcu+0xc/0xf [] __rcu_process_callbacks+0x154/0x1d9 [] rcu_process_callbacks+0x22/0x44 [] tasklet_action+0x6c/0xc5 [] __do_softirq+0x67/0xf5 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x5c/0x62 [] apic_timer_interrupt+0x69/0x70 } ... key at: [] __key.13972+0x0/0x8 -> (&rq->rq_lock_key){++..} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] init_idle+0x98/0xc7 [] sched_init+0x1b8/0x1be [] start_kernel+0x7a/0x24c [] _sinittext+0x28a/0x292 [] 0xffffffffffffffff in-hardirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x24/0x31 [] scheduler_tick+0x74/0x362 [] update_process_times+0x67/0x79 [] smp_local_timer_interrupt+0x2a/0x50 [] main_timer_handler+0x202/0x3a5 [] timer_interrupt+0x14/0x2a [] handle_IRQ_event+0x2b/0x64 [] __do_IRQ+0xae/0x114 [] do_IRQ+0xf7/0x107 [] common_interrupt+0x64/0x65 in-softirq-W at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x24/0x31 [] task_rq_lock+0x41/0x74 [] try_to_wake_up+0x26/0x418 [] wake_up_process+0xf/0x12 [] process_timeout+0x8/0xb [] run_timer_softirq+0x14b/0x1d5 [] __do_softirq+0x67/0xf5 [] call_softirq+0x1d/0x28 [] irq_exit+0x56/0x59 [] smp_apic_timer_interrupt+0x5c/0x62 [] apic_timer_interrupt+0x69/0x70 } ... key at: [] 0xffff810002618700 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock+0x24/0x31 [] task_rq_lock+0x41/0x74 [] try_to_wake_up+0x26/0x418 [] default_wake_function+0xc/0xf [] __wake_up_common+0x3d/0x68 [] complete+0x37/0x4c [] kthread+0xda/0x136 [] child_rip+0x7/0x12 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] __wake_up+0x21/0x50 [] __queue_work+0x4a/0x5e [] queue_work+0x4d/0x57 [] call_usermodehelper_keys+0x119/0x137 [] kobject_uevent+0x3e5/0x42e [] class_device_add+0x314/0x471 [] class_device_register+0x18/0x1d [] class_device_create+0xf7/0x129 [] vtconsole_class_init+0x74/0xbb [] init+0x1fc/0x3cd [] child_rip+0x7/0x12 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] __queue_work+0x17/0x5e [] queue_work+0x4d/0x57 [] schedule_work+0x15/0x18 [] orinoco_interrupt+0x4c0/0xf49 [orinoco] [] handle_IRQ_event+0x2b/0x64 [] __do_IRQ+0xae/0x114 [] do_IRQ+0xf7/0x107 [] common_interrupt+0x64/0x65 -> (&list->lock){....} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] skb_queue_tail+0x1e/0x49 [] netlink_broadcast+0x211/0x2e2 [] kobject_uevent+0x3ab/0x42e [] class_device_add+0x314/0x471 [] class_device_register+0x18/0x1d [] class_device_create+0xf7/0x129 [] evdev_connect+0xfc/0x121 [] input_register_device+0x1e8/0x26d [] atkbd_connect+0x23d/0x26d [] serio_connect_driver+0x2c/0x41 [] serio_driver_probe+0x1a/0x1d [] driver_probe_device+0x5b/0xb1 [] __driver_attach+0x88/0xdb [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x88/0x138 [] driver_register+0x8e/0x93 [] serio_thread+0x14c/0x2a9 [] kthread+0xff/0x136 [] child_rip+0x7/0x12 } ... key at: [] __key.17572+0x0/0x8 ... acquired at: [] lock_acquire+0x4a/0x69 [] _spin_lock_irqsave+0x2b/0x3c [] skb_queue_tail+0x1e/0x49 [] netlink_broadcast+0x211/0x2e2 [] wireless_send_event+0x2ff/0x317 [] orinoco_send_wevents+0x4b/0x8b [orinoco] [] run_workqueue+0xa7/0xfb [] worker_thread+0xee/0x122 [] kthread+0xff/0x136 [] child_rip+0x7/0x12 the hard-irq-unsafe lock's dependencies: -> (af_callback_keys + sk->sk_family){-.--} ops: 0 { initial-use at: [] lock_acquire+0x4a/0x69 [] _read_lock+0x27/0x34 [] sock_def_readable+0x18/0x6f [] netlink_broadcast+0x221/0x2e2 [] kobject_uevent+0x3ab/0x42e [] class_device_add+0x314/0x471 [] class_device_register+0x18/0x1d [] class_device_create+0xf7/0x129 [] evdev_connect+0xfc/0x121 [] input_register_device+0x1e8/0x26d [] atkbd_connect+0x23d/0x26d [] serio_connect_driver+0x2c/0x41 [] serio_driver_probe+0x1a/0x1d [] driver_probe_device+0x5b/0xb1 [] __driver_attach+0x88/0xdb [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x88/0x138 [] driver_register+0x8e/0x93 [] serio_thread+0x14c/0x2a9 [] kthread+0xff/0x136 [] child_rip+0x7/0x12 hardirq-on-W at: [] lock_acquire+0x4a/0x69 [] _write_lock_bh+0x29/0x36 [] netlink_release+0x139/0x2ca [] sock_release+0x19/0x9b [] sock_close+0x33/0x3a [] __fput+0xc6/0x1a8 [] fput+0x13/0x16 [] filp_close+0x64/0x70 [] sys_close+0x93/0xb0 [] system_call+0x7d/0x83 softirq-on-R at: [] lock_acquire+0x4a/0x69 [] _read_lock+0x27/0x34 [] sock_def_readable+0x18/0x6f [] netlink_broadcast+0x221/0x2e2 [] kobject_uevent+0x3ab/0x42e [] class_device_add+0x314/0x471 [] class_device_register+0x18/0x1d [] class_device_create+0xf7/0x129 [] evdev_connect+0xfc/0x121 [] input_register_device+0x1e8/0x26d [] atkbd_connect+0x23d/0x26d [] serio_connect_driver+0x2c/0x41 [] serio_driver_probe+0x1a/0x1d [] driver_probe_device+0x5b/0xb1 [] __driver_attach+0x88/0xdb [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x88/0x138 [] driver_register+0x8e/0x93 [] serio_thread+0x14c/0x2a9 [] kthread+0xff/0x136 [] child_rip+0x7/0x12 hardirq-on-R at: [] lock_acquire+0x4a/0x69 [] _read_lock+0x27/0x34 [] sock_def_readable+0x18/0x6f [] netlink_broadcast+0x221/0x2e2 [] kobject_uevent+0x3ab/0x42e [] class_device_add+0x314/0x471 [] class_device_register+0x18/0x1d [] class_device_create+0xf7/0x129 [] evdev_connect+0xfc/0x121 [] input_register_device+0x1e8/0x26d [] atkbd_connect+0x23d/0x26d [] serio_connect_driver+0x2c/0x41 [] serio_driver_probe+0x1a/0x1d [] driver_probe_device+0x5b/0xb1 [] __driver_attach+0x88/0xdb [] bus_for_each_dev+0x48/0x7a [] driver_attach+0x1b/0x1e [] bus_add_driver+0x88/0x138 [] driver_register+0x8e/0x93 [] serio_thread+0x14c/0x2a9 [] kthread+0xff/0x136 [] child_rip+0x7/0x12 } ... key at: [] af_callback_keys+0x80/0x100 stack backtrace: Call Trace: [] show_trace+0xae/0x30e [] dump_stack+0x15/0x17 [] check_usage+0x27d/0x28e [] __lock_acquire+0x878/0xa54 [] lock_acquire+0x4b/0x69 [] _read_lock+0x28/0x34 [] sock_def_readable+0x19/0x6f [] netlink_broadcast+0x222/0x2e2 [] wireless_send_event+0x300/0x317 [] :orinoco:orinoco_send_wevents+0x4c/0x8b [] run_workqueue+0xa8/0xfb [] worker_thread+0xef/0x122 [] kthread+0x100/0x136 [] child_rip+0x8/0x12 DWARF2 unwinder stuck at child_rip+0x8/0x12 Leftover inexact backtrace: [] _spin_unlock_irq+0x2b/0x31 [] restore_args+0x0/0x30 [] kthread+0x0/0x136 [] child_rip+0x0/0x12 eth1: New link status: Connected (0001) ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready -- http://www.codemonkey.org.uk - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/