Re: [PATCH v4] scsi: ufs: core: Add trace event for MCQ

From: Ziqi Chen
Date: Wed Mar 08 2023 - 21:56:15 EST




On 3/7/2023 11:47 PM, Bart Van Assche wrote:
On 3/6/23 21:53, Ziqi Chen wrote:
You are right,  users may hate it if the trace events for legacy mode and MCQ mode are different. But if I merge them into one event, it will print much invalid information as we can not add if-else into TP_printk().

(For example:  in SDB legacy mode, you can see such invalid prints " hqid = 0 , sqt= 0, cqh=0, cqt = 0")

Users may hate these invalid information.

Anyway, I have made new version that merge 2 mode into one event, but are you sure we really need to use this way? if yes , I can push new version here.

Or, could you give some suggestions if you have better way.

Below is a piece of new version code , you can preview.

     TP_fast_assign(
         __assign_str(dev_name, dev_name);
         __entry->str_t = str_t;
         __entry->tag = tag;
         __entry->doorbell = doorbell;
         __entry->hwq_id = hwq? hwq->id: 0;
         __entry->sq_tail = hwq? hwq->sq_tail_slot: 0;
         __entry->cq_head = hwq? hwq->cq_head_slot: 0;
         __entry->cq_tail = hwq? hwq->cq_tail_slot: 0;
         __entry->transfer_len = transfer_len;
         __entry->lba = lba;
         __entry->intr = intr;
         __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, hqid: %d, sqt: %d, cqh: %d, cqt: %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,__entry->sq_tail, __entry->cq_head, __entry->cq_tail
     )

Hi Ziqi,

Please reply below the original e-mail instead of above. This is expected on Linux kernel mailing lists.

Regarding your question: I propose to leave out the sq_tail, cq_head and cq_tail information. That information may be useful for hardware developers but is not useful for other users of the Linux kernel. So the only piece of information that is left that is MCQ-specific is the hardware queue index. I expect that users will be fine to see that information in trace events.

How about reporting hardware queue index -1 for legacy mode instead of 0? That will allow users to tell the difference between legacy mode and MCQ mode from the trace events.

Thanks,

Bart.

Hi Bart,

Thanks for you suggestion. But the member hwq->id is an Unsigned integer. if you want to identify SDB mode and MCQ mode, using "0" is enough, Or how about add string such as below?

ufshcd_command: MCQ: complete_rsp: 1d84000.ufshc: tag: 14, DB: 0x0, size: 32768, IS: 0, LBA: 5979448,opcode: 0x2a (WRITE_10),group_id: 0x0, hqid: 2

Ziqi