Skip to content

Commit 02b5822

Browse files
bvanasschemartinkpetersen
authored andcommitted
scsi: ufs: core: Fix single doorbell mode support
Commit 22089c2 ("scsi: ufs: core: Optimize the hot path") accidentally broke support for the legacy single doorbell mode. The tag_set.shared_tags pointer is only != NULL if shared tag support is enabled. The UFS driver only enables shared tag support in MCQ mode. Fix this by handling legacy and MCQ modes differently in ufshcd_tag_to_cmd(). Reported-by: Marek Szyprowski <m.szyprowski@samsung.com> Closes: https://lore.kernel.org/linux-scsi/c988a6dd-588d-4dbc-ab83-bbee17f2a686@samsung.com/ Reported-by: André Draszik <andre.draszik@linaro.org> Closes: https://lore.kernel.org/linux-scsi/83ffbceb9e66b2a3b6096231551d969034ed8a74.camel@linaro.org/ Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Fixes: 22089c2 ("scsi: ufs: core: Optimize the hot path") Signed-off-by: Bart Van Assche <bvanassche@acm.org> Tested-by: André Draszik <andre.draszik@linaro.org> Link: https://patch.msgid.link/20251114193406.3097237-1-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent e360bb6 commit 02b5822

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

drivers/ufs/core/ufshcd-priv.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,12 @@ static inline bool ufs_is_valid_unit_desc_lun(struct ufs_dev_info *dev_info, u8
368368
*/
369369
static inline struct scsi_cmnd *ufshcd_tag_to_cmd(struct ufs_hba *hba, u32 tag)
370370
{
371-
struct blk_mq_tags *tags = hba->host->tag_set.shared_tags;
371+
/*
372+
* Host-wide tags are enabled in MCQ mode only. See also the
373+
* host->host_tagset assignment in ufs-mcq.c.
374+
*/
375+
struct blk_mq_tags *tags = hba->host->tag_set.shared_tags ?:
376+
hba->host->tag_set.tags[0];
372377
struct request *rq = blk_mq_tag_to_rq(tags, tag);
373378

374379
if (WARN_ON_ONCE(!rq))

0 commit comments

Comments
 (0)