From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from lists.s-osg.org ([54.187.51.154]:41856 "EHLO lists.s-osg.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751352AbaLXTPr (ORCPT ); Wed, 24 Dec 2014 14:15:47 -0500 Message-ID: <549B10DA.8050408@osg.samsung.com> Date: Wed, 24 Dec 2014 12:15:38 -0700 From: Shuah Khan MIME-Version: 1.0 To: "Mauro Carvalho Chehab (m.chehab@samsung.com)" , ttmesterr@gmail.com, "dheitmueller@kernellabs.com >> Devin Heitmueller" , Shuah Khan CC: Linux Media Mailing List Subject: au0828 - possible circular locking dependency detected Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-media-owner@vger.kernel.org List-ID: All, I am seeing the following warning when driver is initializing. Full trace as follows: au0828_rc_register() calls input_register_device(). In that path input_mutex is held, after that kbd_connect() initiates input_open_device() which results attempt to hold inout_mutex. Is this a known issue and any pointers on solving this. I haven't started any attempts to solve it yet. This is a nested locking issue coming from input core and I am not sure yet on how to solve it. -- Shuah Dec 17 12:50:16 anduin kernel: [ 112.044576] [ INFO: possible circular locking dependency detected ] Dec 17 12:50:16 anduin kernel: [ 112.044580] 3.18.0-rc7+ #13 Not tainted Dec 17 12:50:16 anduin kernel: [ 112.044583] ------------------------------------------------------- Dec 17 12:50:16 anduin kernel: [ 112.044586] systemd-udevd/3367 is trying to acquire lock: Dec 17 12:50:16 anduin kernel: [ 112.044589] (input_mutex){+.+.+.}, at: [] input_register_device+0x431/0x540 Dec 17 12:50:16 anduin kernel: [ 112.044603] Dec 17 12:50:16 anduin kernel: [ 112.044603] but task is already holding lock: Dec 17 12:50:16 anduin kernel: [ 112.044607] (ir_raw_handler_lock){+.+.+.}, at: [] ir_raw_event_register+0x106/0x1b0 Dec 17 12:50:16 anduin kernel: [ 112.044617] Dec 17 12:50:16 anduin kernel: [ 112.044617] which lock already depends on the new lock. Dec 17 12:50:16 anduin kernel: [ 112.044617] Dec 17 12:50:16 anduin kernel: [ 112.044622] Dec 17 12:50:16 anduin kernel: [ 112.044622] the existing dependency chain (in reverse order) is: Dec 17 12:50:16 anduin kernel: [ 112.044625] Dec 17 12:50:16 anduin kernel: [ 112.044625] -> #3 (ir_raw_handler_lock){+.+.+.}: Dec 17 12:50:16 anduin kernel: [ 112.044631] [] lock_acquire+0xb1/0x140 Dec 17 12:50:16 anduin kernel: [ 112.044639] [] mutex_lock_nested+0x49/0x3b0 Dec 17 12:50:16 anduin kernel: [ 112.044645] [] ir_raw_event_register+0x106/0x1b0 Dec 17 12:50:16 anduin kernel: [ 112.044650] [] rc_register_device+0x5a3/0x600 Dec 17 12:50:16 anduin kernel: [ 112.044654] [] au0828_rc_register+0x234/0x2b0 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.044665] [] au0828_usb_probe+0x188/0x2d0 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.044673] [] usb_probe_interface+0x1de/0x350 Dec 17 12:50:16 anduin kernel: [ 112.044679] [] driver_probe_device+0x90/0x3f0 Dec 17 12:50:16 anduin kernel: [ 112.044685] [] __driver_attach+0xa3/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044689] [] bus_for_each_dev+0x73/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044694] [] driver_attach+0x1e/0x20 Dec 17 12:50:16 anduin kernel: [ 112.044698] [] bus_add_driver+0x188/0x260 Dec 17 12:50:16 anduin kernel: [ 112.044703] [] driver_register+0x64/0xf0 Dec 17 12:50:16 anduin kernel: [ 112.044707] [] usb_register_driver+0xa7/0x190 Dec 17 12:50:16 anduin kernel: [ 112.044713] [] au0828_init+0xc4/0x1000 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.044720] [] do_one_initcall+0xc0/0x1f0 Dec 17 12:50:16 anduin kernel: [ 112.044726] [] load_module+0x204d/0x2790 Dec 17 12:50:16 anduin kernel: [ 112.044732] [] SyS_finit_module+0x86/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044737] [] system_call_fastpath+0x12/0x17 Dec 17 12:50:16 anduin kernel: [ 112.044742] Dec 17 12:50:16 anduin kernel: [ 112.044742] -> #2 (&dev->lock#3){+.+.+.}: Dec 17 12:50:16 anduin kernel: [ 112.044750] [] lock_acquire+0xb1/0x140 Dec 17 12:50:16 anduin kernel: [ 112.044755] [] mutex_lock_nested+0x49/0x3b0 Dec 17 12:50:16 anduin kernel: [ 112.044760] [] rc_open+0x2e/0x90 Dec 17 12:50:16 anduin kernel: [ 112.044764] [] ir_open+0x15/0x20 Dec 17 12:50:16 anduin kernel: [ 112.044768] [] input_open_device+0x81/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044772] [] kbd_connect+0x78/0xa0 Dec 17 12:50:16 anduin kernel: [ 112.044778] [] input_attach_handler+0x1bd/0x220 Dec 17 12:50:16 anduin kernel: [ 112.044783] [] input_register_device+0x487/0x540 Dec 17 12:50:16 anduin kernel: [ 112.044787] [] rc_register_device+0x38f/0x600 Dec 17 12:50:16 anduin kernel: [ 112.044791] [] au0828_rc_register+0x234/0x2b0 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.044800] [] au0828_usb_probe+0x188/0x2d0 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.044807] [] usb_probe_interface+0x1de/0x350 Dec 17 12:50:16 anduin kernel: [ 112.044812] [] driver_probe_device+0x90/0x3f0 Dec 17 12:50:16 anduin kernel: [ 112.044816] [] __driver_attach+0xa3/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044821] [] bus_for_each_dev+0x73/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044825] [] driver_attach+0x1e/0x20 Dec 17 12:50:16 anduin kernel: [ 112.044830] [] bus_add_driver+0x188/0x260 Dec 17 12:50:16 anduin kernel: [ 112.044834] [] driver_register+0x64/0xf0 Dec 17 12:50:16 anduin kernel: [ 112.044838] [] usb_register_driver+0xa7/0x190 Dec 17 12:50:16 anduin kernel: [ 112.044843] [] au0828_init+0xc4/0x1000 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.044850] [] do_one_initcall+0xc0/0x1f0 Dec 17 12:50:16 anduin kernel: [ 112.044855] [] load_module+0x204d/0x2790 Dec 17 12:50:16 anduin kernel: [ 112.044860] [] SyS_finit_module+0x86/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044864] [] system_call_fastpath+0x12/0x17 Dec 17 12:50:16 anduin kernel: [ 112.044870] Dec 17 12:50:16 anduin kernel: [ 112.044870] -> #1 (&dev->mutex#2){+.+.+.}: Dec 17 12:50:16 anduin kernel: [ 112.044876] [] lock_acquire+0xb1/0x140 Dec 17 12:50:16 anduin kernel: [ 112.044881] [] mutex_lock_interruptible_nested+0x54/0x430 Dec 17 12:50:16 anduin kernel: [ 112.044886] [] input_register_handle+0x32/0xe0 Dec 17 12:50:16 anduin kernel: [ 112.044891] [] kbd_connect+0x4e/0xa0 Dec 17 12:50:16 anduin kernel: [ 112.044895] [] input_attach_handler+0x1bd/0x220 Dec 17 12:50:16 anduin kernel: [ 112.044900] [] input_register_device+0x487/0x540 Dec 17 12:50:16 anduin kernel: [ 112.044904] [] acpi_button_add+0x289/0x388 Dec 17 12:50:16 anduin kernel: [ 112.044910] [] acpi_device_probe+0x50/0xf7 Dec 17 12:50:16 anduin kernel: [ 112.044916] [] driver_probe_device+0x90/0x3f0 Dec 17 12:50:16 anduin kernel: [ 112.044920] [] __driver_attach+0xa3/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044925] [] bus_for_each_dev+0x73/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044929] [] driver_attach+0x1e/0x20 Dec 17 12:50:16 anduin kernel: [ 112.044933] [] bus_add_driver+0x188/0x260 Dec 17 12:50:16 anduin kernel: [ 112.044937] [] driver_register+0x64/0xf0 Dec 17 12:50:16 anduin kernel: [ 112.044942] [] acpi_bus_register_driver+0x40/0x42 Dec 17 12:50:16 anduin kernel: [ 112.044946] [] acpi_button_driver_init+0x10/0x12 Dec 17 12:50:16 anduin kernel: [ 112.044952] [] do_one_initcall+0xc0/0x1f0 Dec 17 12:50:16 anduin kernel: [ 112.044957] [] kernel_init_freeable+0x1da/0x262 Dec 17 12:50:16 anduin kernel: [ 112.044962] [] kernel_init+0xe/0xf0 Dec 17 12:50:16 anduin kernel: [ 112.044967] [] ret_from_fork+0x7c/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.044972] Dec 17 12:50:16 anduin kernel: [ 112.044972] -> #0 (input_mutex){+.+.+.}: Dec 17 12:50:16 anduin kernel: [ 112.044978] [] __lock_acquire+0x1db6/0x1ff0 Dec 17 12:50:16 anduin kernel: [ 112.044983] [] lock_acquire+0xb1/0x140 Dec 17 12:50:16 anduin kernel: [ 112.044988] [] mutex_lock_interruptible_nested+0x54/0x430 Dec 17 12:50:16 anduin kernel: [ 112.044993] [] input_register_device+0x431/0x540 Dec 17 12:50:16 anduin kernel: [ 112.044997] [] ir_mce_kbd_register+0x125/0x160 Dec 17 12:50:16 anduin kernel: [ 112.045002] [] ir_raw_event_register+0x14e/0x1b0 Dec 17 12:50:16 anduin kernel: [ 112.045006] [] rc_register_device+0x5a3/0x600 Dec 17 12:50:16 anduin kernel: [ 112.045010] [] au0828_rc_register+0x234/0x2b0 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.045018] [] au0828_usb_probe+0x188/0x2d0 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.045026] [] usb_probe_interface+0x1de/0x350 Dec 17 12:50:16 anduin kernel: [ 112.045030] [] driver_probe_device+0x90/0x3f0 Dec 17 12:50:16 anduin kernel: [ 112.045035] [] __driver_attach+0xa3/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.045039] [] bus_for_each_dev+0x73/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.045043] [] driver_attach+0x1e/0x20 Dec 17 12:50:16 anduin kernel: [ 112.045047] [] bus_add_driver+0x188/0x260 Dec 17 12:50:16 anduin kernel: [ 112.045052] [] driver_register+0x64/0xf0 Dec 17 12:50:16 anduin kernel: [ 112.045056] [] usb_register_driver+0xa7/0x190 Dec 17 12:50:16 anduin kernel: [ 112.045061] [] au0828_init+0xc4/0x1000 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.045068] [] do_one_initcall+0xc0/0x1f0 Dec 17 12:50:16 anduin kernel: [ 112.045073] [] load_module+0x204d/0x2790 Dec 17 12:50:16 anduin kernel: [ 112.045078] [] SyS_finit_module+0x86/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.045083] [] system_call_fastpath+0x12/0x17 Dec 17 12:50:16 anduin kernel: [ 112.045088] Dec 17 12:50:16 anduin kernel: [ 112.045088] other info that might help us debug this: Dec 17 12:50:16 anduin kernel: [ 112.045088] Dec 17 12:50:16 anduin kernel: [ 112.045092] Chain exists of: Dec 17 12:50:16 anduin kernel: [ 112.045092] input_mutex --> &dev->lock#3 --> ir_raw_handler_lock Dec 17 12:50:16 anduin kernel: [ 112.045092] Dec 17 12:50:16 anduin kernel: [ 112.045101] Possible unsafe locking scenario: Dec 17 12:50:16 anduin kernel: [ 112.045101] Dec 17 12:50:16 anduin kernel: [ 112.045104] CPU0 CPU1 Dec 17 12:50:16 anduin kernel: [ 112.045106] ---- ---- Dec 17 12:50:16 anduin kernel: [ 112.045108] lock(ir_raw_handler_lock); Dec 17 12:50:16 anduin kernel: [ 112.045112] lock(&dev->lock#3); Dec 17 12:50:16 anduin kernel: [ 112.045117] lock(ir_raw_handler_lock); Dec 17 12:50:16 anduin kernel: [ 112.045120] lock(input_mutex); Dec 17 12:50:16 anduin kernel: [ 112.045124] Dec 17 12:50:16 anduin kernel: [ 112.045124] *** DEADLOCK *** Dec 17 12:50:16 anduin kernel: [ 112.045124] Dec 17 12:50:16 anduin kernel: [ 112.045128] 5 locks held by systemd-udevd/3367: Dec 17 12:50:16 anduin kernel: [ 112.045130] #0: (&dev->mutex){......}, at: [] __driver_attach+0x53/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.045139] #1: (&dev->mutex){......}, at: [] __driver_attach+0x61/0xb0 Dec 17 12:50:16 anduin kernel: [ 112.045148] #2: (&dev->lock#2){+.+.+.}, at: [] au0828_usb_probe+0x9d/0x2d0 [au0828] Dec 17 12:50:16 anduin kernel: [ 112.045160] #3: (&dev->lock#3){+.+.+.}, at: [] rc_register_device+0x39c/0x600 Dec 17 12:50:16 anduin kernel: [ 112.045170] #4: (ir_raw_handler_lock){+.+.+.}, at: [] ir_raw_event_register+0x106/0x1b0 Dec 17 12:50:16 anduin kernel: [ 112.045179] Dec 17 12:50:16 anduin kernel: [ 112.045179] stack backtrace: -- Shuah Khan Sr. Linux Kernel Developer Open Source Innovation Group Samsung Research America (Silicon Valley) shuahkh@osg.samsung.com | (970) 217-8978