]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: ufs: core: Only call ufshcd_should_inform_monitor() for SCSI commands
authorBart Van Assche <bvanassche@acm.org>
Fri, 31 Oct 2025 20:39:21 +0000 (13:39 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 12 Nov 2025 22:02:32 +0000 (17:02 -0500)
ufshcd_should_inform_monitor() only returns 'true' for SCSI commands.
Instead of checking inside ufshcd_should_inform_monitor() whether its
second argument represents a SCSI command, only call this function for
SCSI commands. This patch prepares for removing the lrbp->cmd member.

Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20251031204029.2883185-14-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index f478d5b5230d9d9d7cbeac02557d6b09a93e0558..dbdb8c30ca092c9e52702467a9790e5cbdaf24bf 100644 (file)
@@ -2293,12 +2293,13 @@ static inline int ufshcd_monitor_opcode2dir(u8 opcode)
                return -EINVAL;
 }
 
+/* Must only be called for SCSI commands. */
 static inline bool ufshcd_should_inform_monitor(struct ufs_hba *hba,
                                                struct ufshcd_lrb *lrbp)
 {
        const struct ufs_hba_monitor *m = &hba->monitor;
 
-       return (m->enabled && lrbp && lrbp->cmd &&
+       return (m->enabled &&
                (!m->chunk_size || m->chunk_size == lrbp->cmd->sdb.length) &&
                ktime_before(hba->monitor.enabled_ts, lrbp->issue_time_stamp));
 }
@@ -2368,9 +2369,9 @@ static inline void ufshcd_send_command(struct ufs_hba *hba,
        if (lrbp->cmd) {
                ufshcd_add_command_trace(hba, lrbp->cmd, UFS_CMD_SEND);
                ufshcd_clk_scaling_start_busy(hba);
+               if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
+                       ufshcd_start_monitor(hba, lrbp);
        }
-       if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))
-               ufshcd_start_monitor(hba, lrbp);
 
        if (hba->mcq_enabled) {
                int utrd_size = sizeof(struct utp_transfer_req_desc);