possible recursive locking: find_ref_lock() / v4l2_ctrl_add_handler()

From: Knut Petersen
Date: Sun Feb 10 2013 - 05:50:50 EST


Maybe somebody could have at that old locking warning:

[ 9.761427] cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.9 loaded
[ 9.782848] cx88/0: cx2388x v4l2 driver version 0.0.9 loaded
[ 9.794205] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input5
[ 9.879194] cx88[0]: subsystem: 0070:6906, board: Hauppauge WinTV-HVR4000(Lite) DVB-S/S2 [card=69,autodetected], frontend(s): 1
[ 9.914871] input: HDA Intel Line as /devices/pci0000:00/0000:00:1b.0/sound/card0/input6
[ 9.932037] cx88[0]: TV tuner type -1, Radio tuner type -1
[ 9.953646] input: HDA Intel Front Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input7
[ 9.981718] input: HDA Intel Rear Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[ 9.996493] input: HDA Intel Line Out CLFE as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[ 10.003354] input: HDA Intel Line Out Surround as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[ 10.007987] input: HDA Intel Line Out Front as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
[ 10.450310] tveeprom 9-0050: Hauppauge model 69100, rev B4C3, serial# 7900937
[ 10.453751] tveeprom 9-0050: MAC address is 00:0d:fe:78:8f:09
[ 10.457134] tveeprom 9-0050: tuner model is Conexant CX24118A (idx 123, type 4)
[ 10.460547] tveeprom 9-0050: TV standards ATSC/DVB Digital (eeprom 0x80)
[ 10.463936] tveeprom 9-0050: audio processor is None (idx 0)
[ 10.467320] tveeprom 9-0050: decoder processor is CX880 (idx 20)
[ 10.470648] tveeprom 9-0050: has no radio, has IR receiver, has no IR transmitter
[ 10.474038] cx88[0]: hauppauge eeprom: model=69100
[ 10.508060] Registered IR keymap rc-hauppauge
[ 10.518107] input: cx88 IR (Hauppauge WinTV-HVR400 as /devices/pci0000:00/0000:00:1e.0/0000:05:05.2/rc/rc0/input12
[ 10.526485] rc0: cx88 IR (Hauppauge WinTV-HVR400 as /devices/pci0000:00/0000:00:1e.0/0000:05:05.2/rc/rc0
[ 10.530869] cx88[0]/2: cx2388x 8802 Driver Manager
[ 10.534533] cx88[0]/2: found at 0000:05:05.2, rev: 5, irq: 17, latency: 32, mmio: 0xd2000000
[ 10.541221] cx88[0]/0: found at 0000:05:05.0, rev: 5, irq: 17, latency: 32, mmio: 0xd0000000
[ 10.545197] IR RC5(x) protocol handler initialized
[ 10.557935]
[ 10.560012] =============================================
[ 10.560012] [ INFO: possible recursive locking detected ]
[ 10.560012] 3.8.0-rc7-main #20 Not tainted
[ 10.560012] ---------------------------------------------
[ 10.560012] modprobe/469 is trying to acquire lock:
[ 10.560012] (hdl->lock){+.+...}, at: [<f85604f6>] find_ref_lock+0x1f/0x39 [videodev]
[ 10.560012]
[ 10.560012] but task is already holding lock:
[ 10.560012] (hdl->lock){+.+...}, at: [<f85622d3>] v4l2_ctrl_add_handler+0x35/0x91 [videodev]
[ 10.560012]
[ 10.560012] other info that might help us debug this:
[ 10.560012] Possible unsafe locking scenario:
[ 10.560012]
[ 10.560012] CPU0
[ 10.560012] ----
[ 10.560012] lock(hdl->lock);
[ 10.560012] lock(hdl->lock);
[ 10.560012]
[ 10.560012] *** DEADLOCK ***
[ 10.560012]
[ 10.560012] May be due to missing lock nesting notation
[ 10.560012]
[ 10.560012] 3 locks held by modprobe/469:
[ 10.560012] #0: (&__lockdep_no_validate__){......}, at: [<c03cbcfc>] __driver_attach+0x31/0x6b
[ 10.560012] #1: (&__lockdep_no_validate__){......}, at: [<c03cbd08>] __driver_attach+0x3d/0x6b
[ 10.560012] #2: (hdl->lock){+.+...}, at: [<f85622d3>] v4l2_ctrl_add_handler+0x35/0x91 [videodev]
[ 10.560012]
[ 10.560012] stack backtrace:
[ 10.560012] Pid: 469, comm: modprobe Not tainted 3.8.0-rc7-main #20
[ 10.560012] Call Trace:
[ 10.560012] [<c01272cb>] ? console_unlock+0x34b/0x374
[ 10.560012] [<c015b25a>] __lock_acquire+0x1314/0x138a
[ 10.560012] [<c015bc94>] ? mark_held_locks+0xa1/0xc8
[ 10.560012] [<f85604f6>] ? find_ref_lock+0x1f/0x39 [videodev]
[ 10.560012] [<c015b703>] lock_acquire+0xaf/0xcd
[ 10.560012] [<f85604f6>] ? find_ref_lock+0x1f/0x39 [videodev]
[ 10.560012] [<f85604f6>] ? find_ref_lock+0x1f/0x39 [videodev]
[ 10.560012] [<c04f8ae0>] mutex_lock_nested+0x3a/0x266
[ 10.560012] [<f85604f6>] ? find_ref_lock+0x1f/0x39 [videodev]
[ 10.560012] [<c04f8cc8>] ? mutex_lock_nested+0x222/0x266
[ 10.560012] [<c04f8cf1>] ? mutex_lock_nested+0x24b/0x266
[ 10.560012] [<f85604f6>] find_ref_lock+0x1f/0x39 [videodev]
[ 10.560012] [<f8560db7>] handler_new_ref+0x38/0x143 [videodev]
[ 10.560012] [<f856230b>] v4l2_ctrl_add_handler+0x6d/0x91 [videodev]
[ 10.560012] [<f85c2961>] cx8800_initdev+0x329/0x673 [cx8800]
[ 10.560012] [<c04fd581>] ? sub_preempt_count+0x90/0x9d
[ 10.560012] [<c04faa54>] ? _raw_spin_unlock_irqrestore+0x44/0x5b
[ 10.560012] [<c03d0acd>] ? __pm_runtime_resume+0x40/0x48
[ 10.560012] [<c02e6ca4>] pci_device_probe+0x5f/0x96
[ 10.560012] [<c03cbbe7>] driver_probe_device+0x8f/0x173
[ 10.560012] [<c03cbd1a>] __driver_attach+0x4f/0x6b
[ 10.560012] [<c03ca895>] bus_for_each_dev+0x44/0x66
[ 10.560012] [<c03cb82f>] driver_attach+0x1c/0x21
[ 10.560012] [<c03cbccb>] ? driver_probe_device+0x173/0x173
[ 10.560012] [<c03cb4a8>] bus_add_driver+0x9d/0x1c3
[ 10.560012] [<c03cbf73>] driver_register+0x77/0xe2
[ 10.560012] [<c02dac08>] ? __raw_spin_lock_init+0x26/0x49
[ 10.560012] [<c02e6d84>] __pci_register_driver+0x4a/0x4d
[ 10.560012] [<f85ca000>] ? 0xf85c9fff
[ 10.560012] [<f85ca026>] cx8800_init+0x26/0x1000 [cx8800]
[ 10.560012] [<c0101093>] do_one_initcall+0x75/0x11e
[ 10.560012] [<f85ca000>] ? 0xf85c9fff
[ 10.560012] [<f85ca000>] ? 0xf85c9fff
[ 10.560012] [<c01638ed>] load_module+0x1669/0x198d
[ 10.560012] [<c0163c96>] sys_init_module+0x85/0x87
[ 10.560012] [<c04fae5d>] syscall_call+0x7/0xb
[ 10.749996] cx88[0]/0: registered device video0 [v4l2]
[ 10.754891] cx88[0]/0: registered device vbi0
[ 10.759328] lirc_dev: IR Remote Control driver registered, major 250
[ 10.763449] rc rc0: lirc_dev: driver ir-lirc-codec (cx88xx) registered at minor = 0
[ 10.765473] IR LIRC bridge handler initialized
[ 10.778474] cx88/2: cx2388x dvb driver version 0.0.9 loaded
[ 10.780512] cx88/2: registering cx8802 driver, type: dvb access: shared
[ 10.785004] cx88[0]/2: subsystem: 0070:6906, board: Hauppauge WinTV-HVR4000(Lite) DVB-S/S2 [card=69]
[ 10.787046] cx88[0]/2: cx2388x based DVB/ATSC card
[ 10.794436] cx8802_alloc_frontends() allocating 1 frontend(s)
[ 10.812315] DVB: registering new adapter (cx88[0])
[ 10.814427] cx88-mpeg driver manager 0000:05:05.2: DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)...


Affected kernels
=============
at least 3.6.*, 3.7.*, 3.8.-rc*

Hardware / Software
================
opensuse 12.1 running on an AOpen i915GMm-hfs, Pentium M Dothan, 2GB system.

DVB-S hardware
=============
Hauppauge WinTV Nova HD-S2:

05:05.0 Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6906
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32 (5000ns min, 13750ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 17
Region 0: Memory at d0000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: [44] Vital Product Data
Unknown large resource type 04, will not decode more.
Capabilities: [4c] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: cx8800

05:05.1 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6906
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32 (1000ns min, 63750ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 12
Region 0: Memory at d1000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: [4c] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

05:05.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6906
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32 (1500ns min, 22000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 17
Region 0: Memory at d2000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: [4c] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: cx88-mpeg driver manager

05:05.4 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6906
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 32 (1500ns min, 63750ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 12
Region 0: Memory at d3000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: [4c] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-


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