Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752337Ab1CHJXH (ORCPT ); Tue, 8 Mar 2011 04:23:07 -0500 Received: from mail-bw0-f46.google.com ([209.85.214.46]:38960 "EHLO mail-bw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750844Ab1CHJXA (ORCPT ); Tue, 8 Mar 2011 04:23:00 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=PBGp8x3/SDZTQhYPgSwAmGB/t8K72Aokt/anXLuZzFg8JUVDt3pzN8nos7jBSL+azr k2L6L8Sm/UHac1xOb6y1XDzuyvGpWdFFEWRlvKmgHjfUN7CtgegRQgNiSzAkGT+db0e6 QjkvUkkFxsC5vaOqIsNQ834VqIU+5l2lB+5d0= Date: Tue, 8 Mar 2011 11:22:54 +0200 From: Alexey Dobriyan To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, bskeggs@redhat.com Subject: 2.6.38-rc8: lockdep vs nouveau Message-ID: <20110308092254.GA4909@p183.telecom.by> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 16724 Lines: 257 Happened at boot. [drm] Initialized drm 1.1.0 20060810 nouveau 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 nouveau 0000:01:00.0: setting latency timer to 64 [drm] nouveau 0000:01:00.0: Detected an NV50 generation card (0x450100a2) [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN [drm] nouveau 0000:01:00.0: ... appears to be valid [drm] nouveau 0000:01:00.0: BIT BIOS found [drm] nouveau 0000:01:00.0: Bios version 60.80.13.00 [drm] nouveau 0000:01:00.0: TMDS table version 2.0 [drm] nouveau 0000:01:00.0: BIT table 'd' not found [drm] nouveau 0000:01:00.0: Found Display Configuration Block version 4.0 [drm] nouveau 0000:01:00.0: Raw DCB entry 0: 04000320 00000028 [drm] nouveau 0000:01:00.0: Raw DCB entry 1: 01000322 00000030 [drm] nouveau 0000:01:00.0: Raw DCB entry 2: 02011310 00000028 [drm] nouveau 0000:01:00.0: Raw DCB entry 3: 02011312 00000030 [drm] nouveau 0000:01:00.0: Raw DCB entry 4: 010223f1 00c1c020 [drm] nouveau 0000:01:00.0: DCB connector table: VHER 0x40 5 6 2 [drm] nouveau 0000:01:00.0: 0: 0x00001030: type 0x30 idx 0 tag 0x07 [drm] nouveau 0000:01:00.0: 1: 0x00002130: type 0x30 idx 1 tag 0x08 [drm] nouveau 0000:01:00.0: 2: 0x00000210: type 0x10 idx 2 tag 0xff [drm] nouveau 0000:01:00.0: 3: 0x00000211: type 0x11 idx 3 tag 0xff [drm] nouveau 0000:01:00.0: 4: 0x00000213: type 0x13 idx 4 tag 0xff [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xBC7E [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xBE86 [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xD041 [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xD130 [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xD2E7 [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xD34C [drm] nouveau 0000:01:00.0: 0xD34C: Condition still not met after 20ms, skipping following opcodes [drm] nouveau 0000:01:00.0: 1 available performance level(s) [drm] nouveau 0000:01:00.0: 0: memory 900MHz core 576MHz shader 1350MHz voltage 1300mV fanspeed 100% [drm] nouveau 0000:01:00.0: c: memory 396MHz core 198MHz shader 1188MHz [TTM] Zone kernel: Available graphics memory: 4074414 kiB. [TTM] Zone dma32: Available graphics memory: 2097152 kiB. [TTM] Initializing pool allocator. [drm] nouveau 0000:01:00.0: Detected 768MiB VRAM mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture) [drm] nouveau 0000:01:00.0: DCB encoder 1 unknown [drm] nouveau 0000:01:00.0: TV-1 has no encoders, removing [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [drm] No driver support for vblank timestamp query. ========================================================= [ INFO: possible irq lock inversion dependency detected ] 2.6.38-rc8 #9 --------------------------------------------------------- kworker/0:1/0 just changed the state of lock: (&(&dev_priv->context_switch_lock)->rlock){-.....}, at: [] nouveau_irq_handler+0x57/0x150 but this lock took another, HARDIRQ-unsafe lock in the past: (&(&dev_priv->ramin_lock)->rlock){+.+...} and interrupts could create inverse lock ordering between them. other info that might help us debug this: no locks held by kworker/0:1/0. the shortest dependencies between 2nd lock and 1st lock: -> (&(&dev_priv->ramin_lock)->rlock){+.+...} ops: 24866 { HARDIRQ-ON-W at: [] __lock_acquire+0xbee/0x1c40 [] lock_acquire+0x5a/0x70 [] _raw_spin_lock+0x36/0x50 [] nouveau_gpuobj_new+0xab/0x2e0 [] nv50_instmem_init+0x12e/0x6d0 [] nouveau_card_init+0x446/0x1680 [] nouveau_load+0x433/0x700 [] drm_get_pci_dev+0x18a/0x2a0 [] nouveau_pci_probe+0x10/0x12 [] local_pci_probe+0x12/0x20 [] pci_device_probe+0x80/0xb0 [] driver_probe_device+0x89/0x1a0 [] __driver_attach+0x9b/0xa0 [] bus_for_each_dev+0x68/0x90 [] driver_attach+0x19/0x20 [] bus_add_driver+0x1a8/0x270 [] driver_register+0x78/0x140 [] __pci_register_driver+0x61/0xe0 [] drm_pci_init+0xca/0xe0 [] drm_init+0x53/0x70 [] nouveau_init+0x48/0x4a [] do_one_initcall+0x7a/0x12e [] kernel_init+0x142/0x1c6 [] kernel_thread_helper+0x4/0x10 SOFTIRQ-ON-W at: [] __lock_acquire+0xc24/0x1c40 [] lock_acquire+0x5a/0x70 [] _raw_spin_lock+0x36/0x50 [] nouveau_gpuobj_new+0xab/0x2e0 [] nv50_instmem_init+0x12e/0x6d0 [] nouveau_card_init+0x446/0x1680 [] nouveau_load+0x433/0x700 [] drm_get_pci_dev+0x18a/0x2a0 [] nouveau_pci_probe+0x10/0x12 [] local_pci_probe+0x12/0x20 [] pci_device_probe+0x80/0xb0 [] driver_probe_device+0x89/0x1a0 [] __driver_attach+0x9b/0xa0 [] bus_for_each_dev+0x68/0x90 [] driver_attach+0x19/0x20 [] bus_add_driver+0x1a8/0x270 [] driver_register+0x78/0x140 [] __pci_register_driver+0x61/0xe0 [] drm_pci_init+0xca/0xe0 [] drm_init+0x53/0x70 [] nouveau_init+0x48/0x4a [] do_one_initcall+0x7a/0x12e [] kernel_init+0x142/0x1c6 [] kernel_thread_helper+0x4/0x10 INITIAL USE at: [] __lock_acquire+0x4bb/0x1c40 [] lock_acquire+0x5a/0x70 [] _raw_spin_lock+0x36/0x50 [] nouveau_gpuobj_new+0xab/0x2e0 [] nv50_instmem_init+0x12e/0x6d0 [] nouveau_card_init+0x446/0x1680 [] nouveau_load+0x433/0x700 [] drm_get_pci_dev+0x18a/0x2a0 [] nouveau_pci_probe+0x10/0x12 [] local_pci_probe+0x12/0x20 [] pci_device_probe+0x80/0xb0 [] driver_probe_device+0x89/0x1a0 [] __driver_attach+0x9b/0xa0 [] bus_for_each_dev+0x68/0x90 [] driver_attach+0x19/0x20 [] bus_add_driver+0x1a8/0x270 [] driver_register+0x78/0x140 [] __pci_register_driver+0x61/0xe0 [] drm_pci_init+0xca/0xe0 [] drm_init+0x53/0x70 [] nouveau_init+0x48/0x4a [] do_one_initcall+0x7a/0x12e [] kernel_init+0x142/0x1c6 [] kernel_thread_helper+0x4/0x10 } ... key at: [] __key.40392+0x0/0x8 ... acquired at: [] lock_acquire+0x5a/0x70 [] _raw_spin_lock+0x36/0x50 [] nv50_instmem_flush+0x1d/0x90 [] nv50_fifo_create_context+0x260/0x340 [] nouveau_channel_alloc+0x33d/0x6d0 [] nouveau_card_init+0x5aa/0x1680 [] nouveau_load+0x433/0x700 [] drm_get_pci_dev+0x18a/0x2a0 [] nouveau_pci_probe+0x10/0x12 [] local_pci_probe+0x12/0x20 [] pci_device_probe+0x80/0xb0 [] driver_probe_device+0x89/0x1a0 [] __driver_attach+0x9b/0xa0 [] bus_for_each_dev+0x68/0x90 [] driver_attach+0x19/0x20 [] bus_add_driver+0x1a8/0x270 [] driver_register+0x78/0x140 [] __pci_register_driver+0x61/0xe0 [] drm_pci_init+0xca/0xe0 [] drm_init+0x53/0x70 [] nouveau_init+0x48/0x4a [] do_one_initcall+0x7a/0x12e [] kernel_init+0x142/0x1c6 [] kernel_thread_helper+0x4/0x10 -> (&(&dev_priv->context_switch_lock)->rlock){-.....} ops: 6 { IN-HARDIRQ-W at: [] __lock_acquire+0xd3c/0x1c40 [] lock_acquire+0x5a/0x70 [] _raw_spin_lock_irqsave+0x41/0x60 [] nouveau_irq_handler+0x57/0x150 [] handle_IRQ_event+0x3a/0xe0 [] handle_fasteoi_irq+0x78/0x100 [] handle_irq+0x1d/0x30 [] do_IRQ+0x58/0xd0 [] ret_from_intr+0x0/0x13 [] cpu_idle+0xab/0x110 [] start_secondary+0x1e2/0x1e9 INITIAL USE at: [] __lock_acquire+0x4bb/0x1c40 [] lock_acquire+0x5a/0x70 [] _raw_spin_lock_irqsave+0x41/0x60 [] nouveau_irq_register+0x3a/0x70 [] nv50_gpio_init+0x7d/0x130 [] nouveau_card_init+0x483/0x1680 [] nouveau_load+0x433/0x700 [] drm_get_pci_dev+0x18a/0x2a0 [] nouveau_pci_probe+0x10/0x12 [] local_pci_probe+0x12/0x20 [] pci_device_probe+0x80/0xb0 [] driver_probe_device+0x89/0x1a0 [] __driver_attach+0x9b/0xa0 [] bus_for_each_dev+0x68/0x90 [] driver_attach+0x19/0x20 [] bus_add_driver+0x1a8/0x270 [] driver_register+0x78/0x140 [] __pci_register_driver+0x61/0xe0 [] drm_pci_init+0xca/0xe0 [] drm_init+0x53/0x70 [] nouveau_init+0x48/0x4a [] do_one_initcall+0x7a/0x12e [] kernel_init+0x142/0x1c6 [] kernel_thread_helper+0x4/0x10 } ... key at: [] __key.41016+0x0/0x8 ... acquired at: [] check_usage_forwards+0xa2/0x110 [] mark_lock+0x1f7/0x630 [] __lock_acquire+0xd3c/0x1c40 [] lock_acquire+0x5a/0x70 [] _raw_spin_lock_irqsave+0x41/0x60 [] nouveau_irq_handler+0x57/0x150 [] handle_IRQ_event+0x3a/0xe0 [] handle_fasteoi_irq+0x78/0x100 [] handle_irq+0x1d/0x30 [] do_IRQ+0x58/0xd0 [] ret_from_intr+0x0/0x13 [] cpu_idle+0xab/0x110 [] start_secondary+0x1e2/0x1e9 stack backtrace: Pid: 0, comm: kworker/0:1 Not tainted 2.6.38-rc8 #9 Call Trace: [] ? print_irq_inversion_bug+0x139/0x160 [] ? check_usage_forwards+0x0/0x110 [] ? check_usage_forwards+0xa2/0x110 [] ? mark_lock+0x1f7/0x630 [] ? __lock_acquire+0xd3c/0x1c40 [] ? __lock_acquire+0x4bb/0x1c40 [] ? trace_hardirqs_on_caller+0x65/0x180 [] ? check_for_new_grace_period+0xaa/0x120 [] ? lock_acquire+0x5a/0x70 [] ? nouveau_irq_handler+0x57/0x150 [] ? _raw_spin_lock_irqsave+0x41/0x60 [] ? nouveau_irq_handler+0x57/0x150 [] ? nouveau_irq_handler+0x57/0x150 [] ? handle_IRQ_event+0x3a/0xe0 [] ? handle_fasteoi_irq+0x78/0x100 [] ? handle_irq+0x1d/0x30 [] ? do_IRQ+0x58/0xd0 [] ? ret_from_intr+0x0/0x13 [] ? mwait_idle+0x89/0xc0 [] ? mwait_idle+0x80/0xc0 [] ? cpu_idle+0xab/0x110 [] ? start_secondary+0x1e2/0x1e9 [drm] nouveau 0000:01:00.0: allocated 1280x1024 fb: 0x60000000, bo ffff88023f6e9120 Console: switching to colour frame buffer device 160x64 fb0: nouveaufb frame buffer device drm: registered panic notifier [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0 ... -- 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/