Message ID | 20210929070047.4223-1-powen.kao@mediatek.com (mailing list archive) |
---|---|
Headers | show |
Series | Fix UFS task management command timeout | expand |
> On UTP_TASK_REQ_COMPL interrupt, ufshcd_tmc_handler() iterates through > busy requests in tags->rqs and complete request if corresponding > doorbell flag is reset. > However, ufshcd_issue_tm_cmd() allocates requests from tags->static_rqs > and trigger doorbell directly without dispatching request through block > layer, thus requests can never be found in tags->rqs and completed > properly. Any TM command issued by ufshcd_issue_tm_cmd() inevitably > timeout and further leads to recovery flow failure when LU Reset or > Abort Task is issued. > > In this patch, blk_mq_tagset_busy_iter() call in ufshcd_tmc_handler() > is replaced with new interface, blk_mq_drv_tagset_busy_iter(), to > allow completion of request allocted by driver. The new interface is > introduced for driver to iterate through requests in static_rqs. Is this the same issue that was addressed here - https://www.spinics.net/lists/linux-scsi/msg164520.html ? Thanks, Avri > > Po-Wen Kao (2): > blk-mq: new busy request iterator for driver > scsi: ufs: fix TM request timeout > > block/blk-mq-tag.c | 36 ++++++++++++++++++++++++++++++------ > drivers/scsi/ufs/ufshcd.c | 2 +- > include/linux/blk-mq.h | 4 ++++ > 3 files changed, 35 insertions(+), 7 deletions(-) > > -- > 2.18.0
Hi Avri, Thanks for reminding. It's exactly the same issue. Best, Po-Wen Kao On Wed, 2021-09-29 at 07:39 +0000, Avri Altman wrote: > > On UTP_TASK_REQ_COMPL interrupt, ufshcd_tmc_handler() iterates > > through > > busy requests in tags->rqs and complete request if corresponding > > doorbell flag is reset. > > However, ufshcd_issue_tm_cmd() allocates requests from tags- > > >static_rqs > > and trigger doorbell directly without dispatching request through > > block > > layer, thus requests can never be found in tags->rqs and completed > > properly. Any TM command issued by ufshcd_issue_tm_cmd() inevitably > > timeout and further leads to recovery flow failure when LU Reset or > > Abort Task is issued. > > > > In this patch, blk_mq_tagset_busy_iter() call in > > ufshcd_tmc_handler() > > is replaced with new interface, blk_mq_drv_tagset_busy_iter(), to > > allow completion of request allocted by driver. The new interface > > is > > introduced for driver to iterate through requests in static_rqs. > > Is this the same issue that was addressed here - > https://urldefense.com/v3/__https://www.spinics.net/lists/linux-scsi/msg164520.html__;!!CTRNKA9wMg0ARbw!yDkg-AVkMBFsnDBV42HMDgnE51HaEBarK2Tw8z8Di4aC1_7BrRkjIO13nz5rFUk-FA$ > A$ ? > > Thanks, > Avri > > > > > Po-Wen Kao (2): > > blk-mq: new busy request iterator for driver > > scsi: ufs: fix TM request timeout > > > > block/blk-mq-tag.c | 36 ++++++++++++++++++++++++++++++----- > > - > > drivers/scsi/ufs/ufshcd.c | 2 +- > > include/linux/blk-mq.h | 4 ++++ > > 3 files changed, 35 insertions(+), 7 deletions(-) > > > > -- > > 2.18.0 > >