mbox series

[RFC,0/6] scsi: ufs: Start to make driver synchronization easier to understand

Message ID 20211004120650.153218-1-adrian.hunter@intel.com (mailing list archive)
Headers show
Series scsi: ufs: Start to make driver synchronization easier to understand | expand

Message

Adrian Hunter Oct. 4, 2021, 12:06 p.m. UTC
Hi

Driver synchronization would be easier to understand if we used the
clk_scaling_lock as the only lock to provide either shared (down/up_read)
or exclusive (down/up_write) access to the host.

These patches make changes with that in mind, finally resulting in being
able to hold the down_write() lock for the entire error handler duration.

If this approach is acceptable, it could be extended to simplify the
the synchronization of PM vs error handler and Shutdown vs sysfs.


Adrian Hunter (6):
      scsi: ufs: Encapsulate clk_scaling_lock by inline functions
      scsi: ufs: Rename clk_scaling_lock to host_rw_sem
      scsi: ufs: Let ufshcd_[down/up]_read be nested within ufshcd_[down/up]_write
      scsi: ufs: Fix a possible dead lock in clock scaling
      scsi: ufs: Reorder dev_cmd locking
      scsi: ufs: Hold ufshcd_down_write() lock for entire error handler duration

 drivers/scsi/ufs/ufshcd.c | 104 +++++++++++++++++++++-------------------------
 drivers/scsi/ufs/ufshcd.h |  41 +++++++++++++++++-
 2 files changed, 87 insertions(+), 58 deletions(-)


Regards
Adrian

Comments

Avri Altman Oct. 4, 2021, 12:42 p.m. UTC | #1
> Driver synchronization would be easier to understand if we used the
> clk_scaling_lock as the only lock to provide either shared (down/up_read)
> or exclusive (down/up_write) access to the host.
> 
> These patches make changes with that in mind, finally resulting in being
> able to hold the down_write() lock for the entire error handler duration.
> 
> If this approach is acceptable, it could be extended to simplify the
> the synchronization of PM vs error handler and Shutdown vs sysfs.
Given that UFSHCD_CAP_CLK_SCALING is only set for ufs-qcom:
If extending its use, wouldn't that become a source of contention for them?

Thanks,
Avri
Adrian Hunter Oct. 4, 2021, 1:27 p.m. UTC | #2
On 04/10/2021 15:42, Avri Altman wrote:
>  
>> Driver synchronization would be easier to understand if we used the
>> clk_scaling_lock as the only lock to provide either shared (down/up_read)
>> or exclusive (down/up_write) access to the host.
>>
>> These patches make changes with that in mind, finally resulting in being
>> able to hold the down_write() lock for the entire error handler duration.
>>
>> If this approach is acceptable, it could be extended to simplify the
>> the synchronization of PM vs error handler and Shutdown vs sysfs.
> Given that UFSHCD_CAP_CLK_SCALING is only set for ufs-qcom:
> If extending its use, wouldn't that become a source of contention for them?

It is a good question. The error handler already seems to stop clock scaling.
PM / Shutdown seem to suspend / resume clock scaling. So it doesn't *look*
like it should make much difference.