[v2,2/4] scsi: ufs: Let UPIU completion trace print RSP UPIU header

Message ID 20210531104308.391842-3-huobean@gmail.com
State New
Headers show
Series
  • [v2,1/4] scsi: ufs: Cleanup ufshcd_add_command_trace()
Related show

Commit Message

Bean Huo May 31, 2021, 10:43 a.m.
From: Bean Huo <beanhuo@micron.com>

The current UPIU completion event trace still prints the COMMAND UPIU
header, rather than the RSP UPIU header. This makes UPIU command trace
useless in problem shooting in case we receive a trace log from the
customer/field.

There are two important fields in RSP UPIU:
 1. The response field, which indicates the UFS defined overall success
    or failure of the series of Command, Data and RESPONSE UPIU’s that
    make up the execution of a task.
 2. The Status field, which contains the command set specific status for
    a specific command issued by the initiator device.

Before this patch, the UPIU paired trace events:

ufshcd_upiu: send_req: fe3b0000.ufs: HDR:01 20 00 1c 00 00 00 00 00 00 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00
ufshcd_upiu: complete_rsp: fe3b0000.ufs: HDR:01 20 00 1c 00 00 00 00 00 00 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00

After the patch:

ufshcd_upiu: send_req: fe3b0000.ufs: HDR:01 20 00 1c 00 00 00 00 00 00 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00
ufshcd_upiu: complete_rsp: fe3b0000.ufs: HDR:21 00 00 1c 00 00 00 00 00 00 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00

Signed-off-by: Bean Huo <beanhuo@micron.com>
---
 drivers/scsi/ufs/ufshcd.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Can Guo June 2, 2021, 2:34 a.m. | #1
On 2021-05-31 18:43, Bean Huo wrote:
> From: Bean Huo <beanhuo@micron.com>

> 

> The current UPIU completion event trace still prints the COMMAND UPIU

> header, rather than the RSP UPIU header. This makes UPIU command trace

> useless in problem shooting in case we receive a trace log from the

> customer/field.

> 

> There are two important fields in RSP UPIU:

>  1. The response field, which indicates the UFS defined overall success

>     or failure of the series of Command, Data and RESPONSE UPIU’s that

>     make up the execution of a task.

>  2. The Status field, which contains the command set specific status 

> for

>     a specific command issued by the initiator device.

> 

> Before this patch, the UPIU paired trace events:

> 

> ufshcd_upiu: send_req: fe3b0000.ufs: HDR:01 20 00 1c 00 00 00 00 00 00

> 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00

> ufshcd_upiu: complete_rsp: fe3b0000.ufs: HDR:01 20 00 1c 00 00 00 00

> 00 00 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00

> 

> After the patch:

> 

> ufshcd_upiu: send_req: fe3b0000.ufs: HDR:01 20 00 1c 00 00 00 00 00 00

> 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00

> ufshcd_upiu: complete_rsp: fe3b0000.ufs: HDR:21 00 00 1c 00 00 00 00

> 00 00 00 00, CDB:3b e1 00 00 00 00 00 00 30 00 00 00 00 00 00 00

> 

> Signed-off-by: Bean Huo <beanhuo@micron.com>

> ---

>  drivers/scsi/ufs/ufshcd.c | 8 +++++++-

>  1 file changed, 7 insertions(+), 1 deletion(-)

> 

> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c

> index 85590d3a719e..c5754d5486c9 100644

> --- a/drivers/scsi/ufs/ufshcd.c

> +++ b/drivers/scsi/ufs/ufshcd.c

> @@ -302,11 +302,17 @@ static void ufshcd_add_cmd_upiu_trace(struct

> ufs_hba *hba, unsigned int tag,

>  				      enum ufs_trace_str_t str_t)

>  {

>  	struct utp_upiu_req *rq = hba->lrb[tag].ucd_req_ptr;

> +	struct utp_upiu_header *header;

> 

>  	if (!trace_ufshcd_upiu_enabled())

>  		return;

> 

> -	trace_ufshcd_upiu(dev_name(hba->dev), str_t, &rq->header, 

> &rq->sc.cdb,

> +	if (str_t == UFS_CMD_SEND)

> +		header = &rq->header;

> +	else

> +		header = &hba->lrb[tag].ucd_rsp_ptr->header;

> +

> +	trace_ufshcd_upiu(dev_name(hba->dev), str_t, header, &rq->sc.cdb,

>  			  UFS_TSF_CDB);

>  }


Reviewed-by: Can Guo <cang@codeaurora.org>

Patch

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 85590d3a719e..c5754d5486c9 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -302,11 +302,17 @@  static void ufshcd_add_cmd_upiu_trace(struct ufs_hba *hba, unsigned int tag,
 				      enum ufs_trace_str_t str_t)
 {
 	struct utp_upiu_req *rq = hba->lrb[tag].ucd_req_ptr;
+	struct utp_upiu_header *header;
 
 	if (!trace_ufshcd_upiu_enabled())
 		return;
 
-	trace_ufshcd_upiu(dev_name(hba->dev), str_t, &rq->header, &rq->sc.cdb,
+	if (str_t == UFS_CMD_SEND)
+		header = &rq->header;
+	else
+		header = &hba->lrb[tag].ucd_rsp_ptr->header;
+
+	trace_ufshcd_upiu(dev_name(hba->dev), str_t, header, &rq->sc.cdb,
 			  UFS_TSF_CDB);
 }