> struct ufs_hw_queue *ufshcd_mcq_req_to_hwq(struct ufs_hba *hba, > struct request *req) > { > -u32 utag = blk_mq_unique_tag(req); > -u32 hwq = blk_mq_unique_tag_to_hwq(utag); > +struct blk_mq_hw_ctx *hctx = READ_ONCE(rq->mq_hctx); > > -return &hba->uhq[hwq]; > +return hctx ? &hba->uhq[hctx->queue_num] : NULL; > } > Hi Bart, Yes, it could be work, thanks. > /** > @@ -547,6 +546,8 @@ int ufshcd_mcq_sq_cleanup(struct ufs_hba *hba, > int > task_tag) > if (!cmd) > return -EINVAL; > hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(cmd)); > +if (!hwq) > +return -EINVAL; > Should retrun 0, beacuse hwq null means tag is done by ISR. We don't need cleanup sq now. Thanks. Peter > } else { > hwq = hba->dev_cmd_queue; > } >