mmc_rescan/sdio_reset timeout missing?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I've looking through the code to understand this bug that caused this
stack trace (and ended up panicing below):

<3>[ 1680.501338] INFO: task kworker/u:22:9101 blocked for more than
120 seconds.
<3>[ 1680.501348] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
disables this message.
<6>[ 1680.501357] kworker/u:22    D 8050644c     0  9101      2 0x00000000
<5>[ 1680.501385] [<8050644c>] (__schedule+0x608/0x758) from
[<80506938>] (schedule+0x94/0x98)
<5>[ 1680.501399] [<80506938>] (schedule+0x94/0x98) from [<80504830>]
(schedule_timeout+0x38/0x2d0)
<5>[ 1680.501413] [<80504830>] (schedule_timeout+0x38/0x2d0) from
[<80506788>] (wait_for_common+0x138/0x178)
<5>[ 1680.501427] [<80506788>] (wait_for_common+0x138/0x178) from
[<805068a0>] (wait_for_completion+0x20/0x24)
<5>[ 1680.501442] [<805068a0>] (wait_for_completion+0x20/0x24) from
[<803bc424>] (mmc_wait_for_req_done+0x2c/0x84)
<5>[ 1680.501455] [<803bc424>] (mmc_wait_for_req_done+0x2c/0x84) from
[<803bc8e8>] (mmc_wait_for_req+0x2c/0x30)
<5>[ 1680.501468] [<803bc8e8>] (mmc_wait_for_req+0x2c/0x30) from
[<803bc968>] (mmc_wait_for_cmd+0x7c/0x8c)
<5>[ 1680.501481] [<803bc968>] (mmc_wait_for_cmd+0x7c/0x8c) from
[<803c4fe4>] (mmc_io_rw_direct_host+0xc8/0x138)
<5>[ 1680.501496] [<803c4fe4>] (mmc_io_rw_direct_host+0xc8/0x138) from
[<803c5440>] (sdio_reset+0x38/0x74)
<5>[ 1680.501508] [<803c5440>] (sdio_reset+0x38/0x74) from
[<803be330>] (mmc_rescan+0x214/0x2c0)
<5>[ 1680.501523] [<803be330>] (mmc_rescan+0x214/0x2c0) from
[<80045b04>] (process_one_work+0x210/0x424)
<5>[ 1680.501536] [<80045b04>] (process_one_work+0x210/0x424) from
[<80046128>] (worker_thread+0x1f0/0x39c)
<5>[ 1680.501549] [<80046128>] (worker_thread+0x1f0/0x39c) from
[<8004acc0>] (kthread+0x9c/0xac)
<5>[ 1680.501563] [<8004acc0>] (kthread+0x9c/0xac) from [<8000ee48>]
(kernel_thread_exit+0x0/0x8)
<0>[ 1680.501573] Kernel panic - not syncing: hung_task: blocked tasks
<5>[ 1680.501586] [<80014890>] (unwind_backtrace+0x0/0xec) from
[<80500018>] (dump_stack+0x20/0x24)
<5>[ 1680.501597] [<80500018>] (dump_stack+0x20/0x24) from
[<80500178>] (panic+0x98/0x1e0)
<5>[ 1680.501610] [<80500178>] (panic+0x98/0x1e0) from [<80082658>]
(watchdog+0x1e8/0x24c)
<5>[ 1680.501621] [<80082658>] (watchdog+0x1e8/0x24c) from
[<8004acc0>] (kthread+0x9c/0xac)
<5>[ 1680.501633] [<8004acc0>] (kthread+0x9c/0xac) from [<8000ee48>]
(kernel_thread_exit+0x0/0x8)

I don't see any timers being set in any code path for the calls to
mmc_io_rw_direct_host(host,... SDIO_CCCR_ABORT...) in sdio_reset()
doesn't complete. I was thinking cmd_timeout_ms could be used but eMMC
(dw_mmc driver) only appears to support data_timeout and
response_timeout, not a cmd timeout. And even if dw_mmc did support
that timeout in HW, cmd_timeout_ms isn't getting set in this code
path.

Any advice on how that should be fixed?

I'm assuming the eMMC device (Sandisk SEM16G - eMMC 4.41) has buggy FW
and just wedges after a suspend/resume.

cheers,
grant
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux