diff mbox series

[v6] scsi: ufs: core: Add trace event for MCQ

Message ID 1678792580-3178-1-git-send-email-quic_ziqichen@quicinc.com (mailing list archive)
State Superseded
Headers show
Series [v6] scsi: ufs: core: Add trace event for MCQ | expand

Commit Message

Ziqi Chen March 14, 2023, 11:15 a.m. UTC
Add MCQ hardware queue ID in the existing trace event
ufshcd_command().

Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com>

---
Changes to v5:
- Changed hwq_id type from u32 to int.
- Changed printing string of hwq id from "hqid" to "hwq_id".
- Moved the assignment statement of hwq into the MCQ if-statement.

Changes to v4:
- Merged MCQ and SDB trace event as one.

Changes to v3:
- Free trace_ufshcd_command_mcq() from dependency on trace_ufshcd_command().

Changes to v2:
- Shorten printing strings.

Changes to v1:
- Adjust the order of fields to keep them aligned.
---
 drivers/ufs/core/ufshcd.c  | 15 ++++++++++++---
 include/trace/events/ufs.h | 24 +++++++++++++-----------
 2 files changed, 25 insertions(+), 14 deletions(-)

Comments

Bart Van Assche March 14, 2023, 6:13 p.m. UTC | #1
On 3/14/23 04:15, Ziqi Chen wrote:
>   	TP_printk(
> -		"%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, opcode: 0x%x (%s), group_id: 0x%x",
> -		show_ufs_cmd_trace_str(__entry->str_t), __get_str(dev_name),
> -		__entry->tag, __entry->doorbell, __entry->transfer_len,
> -		__entry->intr, __entry->lba, (u32)__entry->opcode,
> -		str_opcode(__entry->opcode), (u32)__entry->group_id
> +		"%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, opcode: 0x%x (%s), group_id: 0x%x, hwq_id: %d",
> +		 show_ufs_cmd_trace_str(__entry->str_t), __get_str(dev_name),
> +		 __entry->tag, __entry->doorbell, __entry->transfer_len, __entry->intr,
> +		 __entry->lba, (u32)__entry->opcode, str_opcode(__entry->opcode),
> +		 (u32)__entry->group_id, __entry->hwq_id

The alignment of the TP_printk() arguments looks odd. Please make sure 
that arguments 2 and later start in the same column as the opening 
double quote (") instead of one column to the right of that double quote.

Thanks,

Bart.
Ziqi Chen March 15, 2023, 7:43 a.m. UTC | #2
Hi Bart,

Sure, will fix it.


Best Regards,
Ziqi

On 3/15/2023 2:13 AM, Bart Van Assche wrote:
> On 3/14/23 04:15, Ziqi Chen wrote:
>>       TP_printk(
>> -        "%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, 
>> opcode: 0x%x (%s), group_id: 0x%x",
>> -        show_ufs_cmd_trace_str(__entry->str_t), __get_str(dev_name),
>> -        __entry->tag, __entry->doorbell, __entry->transfer_len,
>> -        __entry->intr, __entry->lba, (u32)__entry->opcode,
>> -        str_opcode(__entry->opcode), (u32)__entry->group_id
>> +        "%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, 
>> opcode: 0x%x (%s), group_id: 0x%x, hwq_id: %d",
>> +         show_ufs_cmd_trace_str(__entry->str_t), __get_str(dev_name),
>> +         __entry->tag, __entry->doorbell, __entry->transfer_len, 
>> __entry->intr,
>> +         __entry->lba, (u32)__entry->opcode, 
>> str_opcode(__entry->opcode),
>> +         (u32)__entry->group_id, __entry->hwq_id
> 
> The alignment of the TP_printk() arguments looks odd. Please make sure 
> that arguments 2 and later start in the same column as the opening 
> double quote (") instead of one column to the right of that double quote.
> 
> Thanks,
> 
> Bart.
>
diff mbox series

Patch

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 3b3cf78..1d58cb2 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -422,7 +422,9 @@  static void ufshcd_add_command_trace(struct ufs_hba *hba, unsigned int tag,
 {
 	u64 lba = 0;
 	u8 opcode = 0, group_id = 0;
-	u32 intr, doorbell;
+	u32 doorbell = 0;
+	u32 intr;
+	int hwq_id = -1;
 	struct ufshcd_lrb *lrbp = &hba->lrb[tag];
 	struct scsi_cmnd *cmd = lrbp->cmd;
 	struct request *rq = scsi_cmd_to_rq(cmd);
@@ -456,9 +458,16 @@  static void ufshcd_add_command_trace(struct ufs_hba *hba, unsigned int tag,
 	}
 
 	intr = ufshcd_readl(hba, REG_INTERRUPT_STATUS);
-	doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
+
+	if (is_mcq_enabled(hba)) {
+		struct ufs_hw_queue *hwq = ufshcd_mcq_req_to_hwq(hba, rq);
+
+		hwq_id = hwq->id;
+	} else {
+		doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
+	}
 	trace_ufshcd_command(dev_name(hba->dev), str_t, tag,
-			doorbell, transfer_len, intr, lba, opcode, group_id);
+			doorbell, hwq_id, transfer_len, intr, lba, opcode, group_id);
 }
 
 static void ufshcd_print_clk_freqs(struct ufs_hba *hba)
diff --git a/include/trace/events/ufs.h b/include/trace/events/ufs.h
index 599739e..f467472 100644
--- a/include/trace/events/ufs.h
+++ b/include/trace/events/ufs.h
@@ -268,20 +268,21 @@  DEFINE_EVENT(ufshcd_template, ufshcd_wl_runtime_resume,
 
 TRACE_EVENT(ufshcd_command,
 	TP_PROTO(const char *dev_name, enum ufs_trace_str_t str_t,
-		 unsigned int tag, u32 doorbell, int transfer_len, u32 intr,
-		 u64 lba, u8 opcode, u8 group_id),
+		 unsigned int tag, u32 doorbell, u32 hwq_id, int transfer_len,
+		 u32 intr, u64 lba, u8 opcode, u8 group_id),
 
-	TP_ARGS(dev_name, str_t, tag, doorbell, transfer_len,
-				intr, lba, opcode, group_id),
+	TP_ARGS(dev_name, str_t, tag, doorbell, hwq_id, transfer_len,
+			intr, lba, opcode, group_id),
 
 	TP_STRUCT__entry(
 		__string(dev_name, dev_name)
 		__field(enum ufs_trace_str_t, str_t)
 		__field(unsigned int, tag)
 		__field(u32, doorbell)
-		__field(int, transfer_len)
+		__field(u32, hwq_id)
 		__field(u32, intr)
 		__field(u64, lba)
+		__field(int, transfer_len)
 		__field(u8, opcode)
 		__field(u8, group_id)
 	),
@@ -291,19 +292,20 @@  TRACE_EVENT(ufshcd_command,
 		__entry->str_t = str_t;
 		__entry->tag = tag;
 		__entry->doorbell = doorbell;
-		__entry->transfer_len = transfer_len;
+		__entry->hwq_id = hwq_id;
 		__entry->intr = intr;
 		__entry->lba = lba;
+		__entry->transfer_len = transfer_len;
 		__entry->opcode = opcode;
 		__entry->group_id = group_id;
 	),
 
 	TP_printk(
-		"%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, opcode: 0x%x (%s), group_id: 0x%x",
-		show_ufs_cmd_trace_str(__entry->str_t), __get_str(dev_name),
-		__entry->tag, __entry->doorbell, __entry->transfer_len,
-		__entry->intr, __entry->lba, (u32)__entry->opcode,
-		str_opcode(__entry->opcode), (u32)__entry->group_id
+		"%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, opcode: 0x%x (%s), group_id: 0x%x, hwq_id: %d",
+		 show_ufs_cmd_trace_str(__entry->str_t), __get_str(dev_name),
+		 __entry->tag, __entry->doorbell, __entry->transfer_len, __entry->intr,
+		 __entry->lba, (u32)__entry->opcode, str_opcode(__entry->opcode),
+		 (u32)__entry->group_id, __entry->hwq_id
 	)
 );