summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBart Van Assche <bvanassche@acm.org>2026-05-20 00:21:29 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2026-05-23 04:40:40 +0300
commitf8380c57dcff5ac3b32393a05ff6a6ff0108bf3e (patch)
tree0b2b8f80a387e6796ada0da54c05f4c6b325ad82
parent9fb4c793223b618da6bee50840746522a7da226e (diff)
downloadlinux-f8380c57dcff5ac3b32393a05ff6a6ff0108bf3e.tar.xz
scsi: ufs: core: Optimize ufshcd_add_uic_command_trace()
Use cached values in ufshcd_add_uic_command_trace() instead of calling readl() when tracing command submission (UFS_CMD_SEND). Signed-off-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Peter Wang <peter.wang@mediatek.com> Link: https://patch.msgid.link/20260519212135.3130556-4-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/ufs/core/ufshcd.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index cfb362fe9784..c1a0a79e386d 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -460,20 +460,24 @@ static void ufshcd_add_uic_command_trace(struct ufs_hba *hba,
const struct uic_command *ucmd,
enum ufs_trace_str_t str_t)
{
- u32 cmd;
+ u32 cmd, arg1, arg2, arg3;
if (!trace_ufshcd_uic_command_enabled())
return;
- if (str_t == UFS_CMD_SEND)
+ if (str_t == UFS_CMD_SEND) {
cmd = ucmd->command;
- else
+ arg1 = ucmd->argument1;
+ arg2 = ucmd->argument2;
+ arg3 = ucmd->argument3;
+ } else {
cmd = ufshcd_readl(hba, REG_UIC_COMMAND);
+ arg1 = ufshcd_readl(hba, REG_UIC_COMMAND_ARG_1);
+ arg2 = ufshcd_readl(hba, REG_UIC_COMMAND_ARG_2);
+ arg3 = ufshcd_readl(hba, REG_UIC_COMMAND_ARG_3);
+ }
- trace_ufshcd_uic_command(hba, str_t, cmd,
- ufshcd_readl(hba, REG_UIC_COMMAND_ARG_1),
- ufshcd_readl(hba, REG_UIC_COMMAND_ARG_2),
- ufshcd_readl(hba, REG_UIC_COMMAND_ARG_3));
+ trace_ufshcd_uic_command(hba, str_t, cmd, arg1, arg2, arg3);
}
static void ufshcd_add_command_trace(struct ufs_hba *hba, struct scsi_cmnd *cmd,