Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit f9f1deb3 authored by Nitin Rawat's avatar Nitin Rawat
Browse files

scsi: ufs: Hold auto suspend until ufs async scan completes



To avoid any suspend during probe, we increment the device
usage counter before calling ufshcd_async_scan and decrement
before returning from ufshcd_async_scan function.

For the scenarios where ufs device initialisation fails
or if the ufs device is not present, we are decrementing
device usage counter before calling ufshcd_hba_exit.

Hence there is a possiblity that after we disable the clocks
as part of ufshcd_hba_exit call, runtime suspend may get
triggered. As part of runtime suspend, we are accessing
the register causing noc error due to unclocked access.

To fix this, we are removing pm_runtime_put_sync
from ufshcd_add_lus() and adding it in common place
at the end of ufshcd_async_scan so that we hold auto
suspend until async scan completes in both success and
failure case.

Call Stack:
 panic+0x17c
 panic+0x0
 arm64_serror_panic+0x74
 do_serror+0x15c
 el1_error+0xbc
 el1_irq+0xb0
 crypto_qti_resume+0x68
 ufshcd_crypto_qti_resume+0x18
 ufshcd_crypto_resume+0x3c
 ufshcd_suspend+0x5b0
 ufshcd_runtime_suspend+0x44
 ufshcd_pltfrm_runtime_suspend+0x14
 pm_generic_runtime_suspend+0x44
 __rpm_callback+0x98
 rpm_suspend+0x2a4
 rpm_idle+0x158

  schedule+0x8c
 schedule_preempt_disabled+0x24
 __mutex_lock+0x358
 __mutex_lock_slowpath+0x14
 mutex_lock+0x34
 clk_unprepare+0x58
 __ufshcd_setup_clocks+0x140
 ufshcd_hba_exit+0x170
 ufshcd_async_scan$d36fba0b664edbd124b5d17d005db4c5+0x118
 async_run_entry_fn$8847b5d726ee295ba72a029a76bec2f5+0x60
 process_one_work+0x2cc
 worker_thread$f31e2447a3fdcb60f4b193f95acd647c+0x278
 kthread$bf1537fa370ac32bde5f056194ddafc6+0x16c
 ret_from_fork+0x10.

Change-Id: I059de2b0eba642bf1a35c27e8e12d31c6f30a836
Signed-off-by: default avatarNitin Rawat <nitirawa@codeaurora.org>
parent 9ddceddf
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment