On 01/10/2021 19:59, Bart Van Assche wrote: > On 9/30/21 11:52 PM, Adrian Hunter wrote: >> Finally, there is another thing to change. The reason >> ufshcd_suspend_prepare() does a runtime resume of sdev_rpmb is because the >> UAC clear would wait for an async runtime resume, which will never happen >> during system suspend because the PM workqueue gets frozen. So with the >> removal of UAC clear, ufshcd_suspend_prepare() and ufshcd_resume_complete() >> should be updated also, to leave rpmb alone. > > Is the following change what you have in mind? Yes, exactly. > > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index 0a28cc4c09d8..0743f54e55f9 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -9648,10 +9648,6 @@ void ufshcd_resume_complete(struct device *dev) > ufshcd_rpm_put(hba); > hba->complete_put = false; > } > - if (hba->rpmb_complete_put) { > - ufshcd_rpmb_rpm_put(hba); > - hba->rpmb_complete_put = false; > - } > } > EXPORT_SYMBOL_GPL(ufshcd_resume_complete); > > @@ -9674,10 +9670,6 @@ int ufshcd_suspend_prepare(struct device *dev) > } > hba->complete_put = true; > } > - if (hba->sdev_rpmb) { > - ufshcd_rpmb_rpm_get_sync(hba); > - hba->rpmb_complete_put = true; > - } > return 0; > } > EXPORT_SYMBOL_GPL(ufshcd_suspend_prepare); > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h > index 86b615023ecb..5ecfcd8cae0a 100644 > --- a/drivers/scsi/ufs/ufshcd.h > +++ b/drivers/scsi/ufs/ufshcd.h > @@ -921,7 +921,6 @@ struct ufs_hba { > #endif > u32 luns_avail; > bool complete_put; > - bool rpmb_complete_put; > }; > > /* Returns true if clocks can be gated. Otherwise false */ > > > > Thanks, > > Bart.