On 2019-11-15 14:35, Stanley Chu wrote:
Hi Can,
On Thu, 2019-11-14 at 22:09 -0800, Can Guo wrote:
+ if (hba->ahit != ahit)
+ hba->ahit = ahit;
spin_unlock_irqrestore(hba->host->host_lock, flags);
+ if (!pm_runtime_suspended(hba->dev)) {
Always do pm_runtime_get_sync() here could avoid possible racing?
And thus AH8 could be enabled regardless of runtime status.
+ pm_runtime_get_sync(hba->dev);
+ ufshcd_hold(hba, false);
+ ufshcd_auto_hibern8_enable(hba);
+ ufshcd_release(hba);
+ pm_runtime_put(hba->dev);
+ }
}
Thanks,
Stanley
Hi Stanley,
if !pm_runtime_suspended() is true, hba->dev's runtime status, other
than RPM_ACTIVE,
may be RPM_SUSPENDING or RPM_RESUMING. So, here for safty, do
pm_runtime_get_sync() once
before access registers, in case we hit corner cases in which powers
and/or clocks are OFF.
Thanks,
Can Guo.