*** DEADLOCK ***
John Tobias
john.tobias.ph at gmail.com
Wed Jan 8 17:19:15 EST 2014
Hi Dong,
I used your patches to fix hardirq-unsafe and didn't see the said
messages anymore when I repeatedly booting my board.
But, I saw another DEADLOCK (see below) if I enable my wifi.
Regards,
john
[ 24.554647] =================================
[ 24.559021] [ INFO: inconsistent lock state ]
[ 24.563401] 3.13.0-rc1 #47 Tainted: G O
[ 24.568122] ---------------------------------
[ 24.572497] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
[ 24.578528] kworker/u2:1/13 [HC0[0]:SC0[0]:HE1:SE1] takes:
[ 24.584029] (&(&host->lock)->rlock){?.-...}, at: [<8032d8d4>]
sdhci_execute_tuning+0x48/0x70c
[ 24.592776] {IN-HARDIRQ-W} state was registered at:
[ 24.597669] [<8004d940>] mark_lock+0x1b0/0x784
[ 24.602339] [<8004f080>] __lock_acquire+0xb74/0x1cd0
[ 24.607518] [<800509ac>] lock_acquire+0x70/0x84
[ 24.612262] [<8050d928>] _raw_spin_lock+0x38/0x48
[ 24.617188] [<8032e754>] sdhci_irq+0x20/0xbe0
[ 24.621761] [<8005963c>] handle_irq_event_percpu+0x3c/0x1a0
[ 24.627549] [<800597e4>] handle_irq_event+0x44/0x64
[ 24.632638] [<8005c214>] handle_fasteoi_irq+0x84/0x14c
[ 24.637993] [<80058e24>] generic_handle_irq+0x34/0x44
[ 24.643258] [<8000f8a8>] handle_IRQ+0x40/0x8c
[ 24.647835] [<80008578>] gic_handle_irq+0x34/0x5c
[ 24.652752] [<80013204>] __irq_svc+0x44/0x58
[ 24.657242] [<80251534>] pin_get_from_name+0x58/0x80
[ 24.662429] [<802536e0>] pinconf_map_to_setting+0x70/0xb0
[ 24.668050] [<80250cb8>] pinctrl_get+0x238/0x46c
[ 24.672880] [<80250f20>] devm_pinctrl_get+0x34/0x70
[ 24.677972] [<802a6610>] pinctrl_bind_pins+0x34/0x200
[ 24.683245] [<802913d8>] driver_probe_device+0x88/0x390
[ 24.688691] [<802917c8>] __driver_attach+0x9c/0xa0
[ 24.693695] [<8028f604>] bus_for_each_dev+0x68/0x9c
[ 24.698789] [<80290e58>] driver_attach+0x24/0x28
[ 24.703621] [<80290a58>] bus_add_driver+0x164/0x220
[ 24.708712] [<80291e54>] driver_register+0x80/0x100
[ 24.713802] [<802930dc>] __platform_driver_register+0x5c/0x64
[ 24.719767] [<806bba98>] sdhci_esdhc_imx_driver_init+0x18/0x20
[ 24.725817] [<80008818>] do_one_initcall+0xe4/0x190
[ 24.730907] [<806a1c38>] kernel_init_freeable+0x12c/0x1cc
[ 24.736530] [<80502dc0>] kernel_init+0x10/0x128
[ 24.741283] [<8000f068>] ret_from_fork+0x14/0x2c
[ 24.746122] irq event stamp: 45121
[ 24.749539] hardirqs last enabled at (45121): [<8050dbb8>]
_raw_spin_unlock_irqrestore+0x38/0x4c
[ 24.758457] hardirqs last disabled at (45120): [<8050da34>]
_raw_spin_lock_irqsave+0x24/0x5c
[ 24.766939] softirqs last enabled at (45112): [<80025264>]
__do_softirq+0x1c8/0x278
[ 24.774723] softirqs last disabled at (45101): [<80025700>]
irq_exit+0xc0/0x108
[ 24.782072]
[ 24.782072] other info that might help us debug this:
[ 24.788620] Possible unsafe locking scenario:
[ 24.788620]
[ 24.794556] CPU0
[ 24.797016] ----
[ 24.799474] lock(&(&host->lock)->rlock);
[ 24.803624] <Interrupt>
[ 24.806255] lock(&(&host->lock)->rlock);
[ 24.810576]
[ 24.810576] *** DEADLOCK ***
[ 24.810576]
[ 24.816521] 2 locks held by kworker/u2:1/13:
[ 24.820803] #0: (kmmcd){.+.+.+}, at: [<80036adc>]
process_one_work+0x124/0x44c
[ 24.828333] #1: ((&(&host->detect)->work)){+.+.+.}, at:
[<80036adc>] process_one_work+0x124/0x44c
[ 24.837503]
[ 24.837503] stack backtrace:
[ 24.841889] CPU: 0 PID: 13 Comm: kworker/u2:1 Tainted: G
O 3.13.0-rc1 #47
[ 24.849578] Workqueue: kmmcd mmc_rescan
[ 24.853448] Backtrace:
[ 24.855958] [<80012444>] (dump_backtrace+0x0/0x110) from
[<80012714>] (show_stack+0x18/0x1c)
[ 24.864412] r6:00000000 r5:807c4b24 r4:bf867200 r3:bf867200
[ 24.870192] [<800126fc>] (show_stack+0x0/0x1c) from [<80507598>]
(dump_stack+0x24/0x28)
[ 24.878235] [<80507574>] (dump_stack+0x0/0x28) from [<80505744>]
(print_usage_bug.part.34+0x2b0/0x2bc)
[ 24.887578] [<80505494>] (print_usage_bug.part.34+0x0/0x2bc) from
[<8004d9d4>] (mark_lock+0x244/0x784)
[ 24.896900] r8:807c4b24 r7:806e1908 r6:bf867200 r5:bf867670 r4:00000002
[ 24.903739] [<8004d790>] (mark_lock+0x0/0x784) from [<8004eb0c>]
(__lock_acquire+0x600/0x1cd0)
[ 24.912383] [<8004e50c>] (__lock_acquire+0x0/0x1cd0) from
[<800509ac>] (lock_acquire+0x70/0x84)
[ 24.921113] [<8005093c>] (lock_acquire+0x0/0x84) from [<8050d928>]
(_raw_spin_lock+0x38/0x48)
[ 24.929652] r7:00000004 r6:00000005 r5:bfbec000 r4:bf9e6c70
[ 24.935439] [<8050d8f0>] (_raw_spin_lock+0x0/0x48) from
[<8032d8d4>] (sdhci_execute_tuning+0x48/0x70c)
[ 24.944761] r4:bf9e6800
[ 24.947349] [<8032d88c>] (sdhci_execute_tuning+0x0/0x70c) from
[<80322f50>] (mmc_sdio_init_card+0xa3c/0xadc)
[ 24.957207] [<80322514>] (mmc_sdio_init_card+0x0/0xadc) from
[<80323310>] (mmc_attach_sdio+0x80/0x368)
[ 24.966549] [<80323290>] (mmc_attach_sdio+0x0/0x368) from
[<8031b968>] (mmc_rescan+0x26c/0x2f0)
[ 24.975283] [<8031b6fc>] (mmc_rescan+0x0/0x2f0) from [<80036b58>]
(process_one_work+0x1a0/0x44c)
[ 24.984082] r8:00000000 r7:bf94fea8 r6:bf84e800 r5:bf9e6af8 r4:bf914d80
r3:8031b6fc
[ 24.992078] [<800369b8>] (process_one_work+0x0/0x44c) from
[<80037a9c>] (worker_thread+0x124/0x3f8)
[ 25.001161] [<80037978>] (worker_thread+0x0/0x3f8) from
[<8003d6cc>] (kthread+0xdc/0xf0)
[ 25.009284] [<8003d5f0>] (kthread+0x0/0xf0) from [<8000f068>]
(ret_from_fork+0x14/0x2c)
[ 25.017302] r7:00000000 r6:00000000 r5:8003d5f0 r4:bf92dd00
[ 25.065548] mmc1: new ultra high speed SDR50 SDIO card at address 0001
[ 25.085698] vendor=0x02DF device=0x9129 class=0 function=1
More information about the linux-arm-kernel
mailing list