Re: [PATCH v5 3/7] scsi: ufs: Fix up auto hibern8 enablement

From: Can Guo
Date: Fri Nov 15 2019 - 02:03:46 EST


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.