Messages in this thread | | | Subject | Re: [PATCH v3 8/9] scsi: ufs: Update the fast abort path in ufshcd_abort() for PM requests | From | Bart Van Assche <> | Date | Sat, 12 Jun 2021 09:50:51 -0700 |
| |
On 6/12/21 12:07 AM, Can Guo wrote: > Sigh... I also want my life and work to be easier...
How about reducing the number of states and state transitions in the UFS driver?
One source of complexity is that ufshcd_err_handler() is scheduled independently of the SCSI error handler and hence may run concurrently with the SCSI error handler. Has the following already been considered? - Call ufshcd_err_handler() synchronously from ufshcd_abort() and ufshcd_eh_host_reset_handler() instead of asynchronously. - Call scsi_schedule_eh() from ufshcd_uic_pwr_ctrl() and ufshcd_check_errors() instead of ufshcd_schedule_eh_work().
These changes will guarantee that all commands have completed or timed out before ufshcd_err_handler() is called. I think that would allow to remove e.g. the following code from the error handler:
ufshcd_scsi_block_requests(hba); /* Drain ufshcd_queuecommand() */ down_write(&hba->clk_scaling_lock); up_write(&hba->clk_scaling_lock);
Thanks,
Bart.
| |