Skip to content

Commit cb7cc0c

Browse files
bvanasschemartinkpetersen
authored andcommitted
scsi: ufs: core: Only collect timestamps if monitoring is enabled
Every ktime_get() call in the hot path has a measurable impact on IOPS. Hence, only collect timestamps if the monitoring functionality is enabled. See also commit 1d8613a ("scsi: ufs: core: Introduce HBA performance monitor sysfs nodes"). Cc: Can Guo <cang@codeaurora.org> Cc: Bean Huo <beanhuo@micron.com> Cc: Daejun Park <daejun7.park@samsung.com> Reviewed-by: Peter Wang <peter.wang@mediatek.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20250819153958.2255907-1-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 6f4b102 commit cb7cc0c

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

drivers/ufs/core/ufshcd.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -606,10 +606,12 @@ void ufshcd_print_tr(struct ufs_hba *hba, int tag, bool pr_prdt)
606606

607607
lrbp = &hba->lrb[tag];
608608

609-
dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
610-
tag, div_u64(lrbp->issue_time_stamp_local_clock, 1000));
611-
dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n",
612-
tag, div_u64(lrbp->compl_time_stamp_local_clock, 1000));
609+
if (hba->monitor.enabled) {
610+
dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n", tag,
611+
div_u64(lrbp->issue_time_stamp_local_clock, 1000));
612+
dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n", tag,
613+
div_u64(lrbp->compl_time_stamp_local_clock, 1000));
614+
}
613615
dev_err(hba->dev,
614616
"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
615617
tag, (u64)lrbp->utrd_dma_addr);
@@ -2356,10 +2358,12 @@ void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag,
23562358
struct ufshcd_lrb *lrbp = &hba->lrb[task_tag];
23572359
unsigned long flags;
23582360

2359-
lrbp->issue_time_stamp = ktime_get();
2360-
lrbp->issue_time_stamp_local_clock = local_clock();
2361-
lrbp->compl_time_stamp = ktime_set(0, 0);
2362-
lrbp->compl_time_stamp_local_clock = 0;
2361+
if (hba->monitor.enabled) {
2362+
lrbp->issue_time_stamp = ktime_get();
2363+
lrbp->issue_time_stamp_local_clock = local_clock();
2364+
lrbp->compl_time_stamp = ktime_set(0, 0);
2365+
lrbp->compl_time_stamp_local_clock = 0;
2366+
}
23632367
ufshcd_add_command_trace(hba, task_tag, UFS_CMD_SEND);
23642368
if (lrbp->cmd)
23652369
ufshcd_clk_scaling_start_busy(hba);
@@ -5619,8 +5623,10 @@ void ufshcd_compl_one_cqe(struct ufs_hba *hba, int task_tag,
56195623
enum utp_ocs ocs;
56205624

56215625
lrbp = &hba->lrb[task_tag];
5622-
lrbp->compl_time_stamp = ktime_get();
5623-
lrbp->compl_time_stamp_local_clock = local_clock();
5626+
if (hba->monitor.enabled) {
5627+
lrbp->compl_time_stamp = ktime_get();
5628+
lrbp->compl_time_stamp_local_clock = local_clock();
5629+
}
56245630
cmd = lrbp->cmd;
56255631
if (cmd) {
56265632
if (unlikely(ufshcd_should_inform_monitor(hba, lrbp)))

0 commit comments

Comments
 (0)