]> www.infradead.org Git - users/hch/misc.git/commitdiff
scsi: ufs: core: Improve IOPS
authorBart Van Assche <bvanassche@acm.org>
Wed, 13 Aug 2025 17:10:41 +0000 (10:10 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 19 Aug 2025 01:59:42 +0000 (21:59 -0400)
Measurements have shown that IOPS improve by 2% - 3% on my UFS 4 test
setup every time a ktime_get() call is removed from the UFS driver
command processing path. Hence this patch that modifies
ufshcd_clk_scaling_start_busy() such that ktime_get() is only called if
the returned value will be used.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20250813171049.3399387-1-bvanassche@acm.org
Reviewed-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index 96ad57c3144bc00c6e95a43ede2ac0e8ac93ea97..daae452a1d25c63b7b8da3ec548e208301549a9f 100644 (file)
@@ -2230,11 +2230,13 @@ static void ufshcd_exit_clk_gating(struct ufs_hba *hba)
 static void ufshcd_clk_scaling_start_busy(struct ufs_hba *hba)
 {
        bool queue_resume_work = false;
-       ktime_t curr_t = ktime_get();
+       ktime_t curr_t;
 
        if (!ufshcd_is_clkscaling_supported(hba))
                return;
 
+       curr_t = ktime_get();
+
        guard(spinlock_irqsave)(&hba->clk_scaling.lock);
 
        if (!hba->clk_scaling.active_reqs++)