diff mbox

scsi: ufs: add ufs a command complete time stamp

Message ID 20170920103040.20613-1-zangleigang@hisilicon.com (mailing list archive)
State Superseded
Headers show

Commit Message

Zang Leigang Sept. 20, 2017, 10:30 a.m. UTC
Signed-off-by: Zang Leigang <zangleigang@hisilicon.com>

Comments

subhashj@codeaurora.org Sept. 26, 2017, 9:39 p.m. UTC | #1
On 2017-09-20 03:30, Zang Leigang wrote:
> Signed-off-by: Zang Leigang <zangleigang@hisilicon.com>
> 
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index 794a4600e952..2984f33095be 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -385,6 +385,8 @@ void ufshcd_print_trs(struct ufs_hba *hba,
> unsigned long bitmap, bool pr_prdt)
> 
>  		dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
>  				tag, ktime_to_us(lrbp->issue_time_stamp));
> +		dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n",
> +				tag, ktime_to_us(lrbp->complete_time_stamp));
>  		dev_err(hba->dev,
>  			"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
>  			tag, (u64)lrbp->utrd_dma_addr);
> @@ -1746,6 +1748,7 @@ static inline
>  void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
>  {
>  	hba->lrb[task_tag].issue_time_stamp = ktime_get();
> +	hba->lrb[task_tag].complete_time_stamp.tv64 = 0UL;

can we use ktime_set(0, 0)?
complete_time_stamp = ktime_set(0, 0);


>  	ufshcd_clk_scaling_start_busy(hba);
>  	__set_bit(task_tag, &hba->outstanding_reqs);
>  	ufshcd_writel(hba, 1 << task_tag, REG_UTP_TRANSFER_REQ_DOOR_BELL);
> @@ -4627,6 +4630,8 @@ static void __ufshcd_transfer_req_compl(struct
> ufs_hba *hba,
>  		}
>  		if (ufshcd_is_clkscaling_supported(hba))
>  			hba->clk_scaling.active_reqs--;
> +
> +		lrbp->complete_time_stamp = ktime_get();
>  	}
> 
>  	/* clear corresponding bits of completed commands */
> diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
> index cdc8bd05f7df..67a8f8ef1b06 100644
> --- a/drivers/scsi/ufs/ufshcd.h
> +++ b/drivers/scsi/ufs/ufshcd.h
> @@ -166,6 +166,7 @@ struct ufs_pm_lvl_states {
>   * @lun: LUN of the command
>   * @intr_cmd: Interrupt command (doesn't participate in interrupt 
> aggregation)
>   * @issue_time_stamp: time stamp for debug purposes
> + * @complete_time_stamp: time stamp for statistics
>   * @req_abort_skip: skip request abort task flag
>   */
>  struct ufshcd_lrb {
> @@ -189,6 +190,7 @@ struct ufshcd_lrb {
>  	u8 lun; /* UPIU LUN id field is only 8-bit wide */
>  	bool intr_cmd;
>  	ktime_t issue_time_stamp;
> +	ktime_t complete_time_stamp;

Just a suggestion for short name, s/complete/compl ? or s/complete/cmpl 
?

> 
>  	bool req_abort_skip;
>  };
Zang Leigang Sept. 27, 2017, 3:21 a.m. UTC | #2
Hi, Subhash

I send a new patch, forget tag a "PATCH V2", pls check.

On Tue, Sep 26, 2017 at 02:39:06PM -0700, Subhash Jadavani wrote:
> On 2017-09-20 03:30, Zang Leigang wrote:
> >Signed-off-by: Zang Leigang <zangleigang@hisilicon.com>
> >
> >diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> >index 794a4600e952..2984f33095be 100644
> >--- a/drivers/scsi/ufs/ufshcd.c
> >+++ b/drivers/scsi/ufs/ufshcd.c
> >@@ -385,6 +385,8 @@ void ufshcd_print_trs(struct ufs_hba *hba,
> >unsigned long bitmap, bool pr_prdt)
> >
> > 		dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
> > 				tag, ktime_to_us(lrbp->issue_time_stamp));
> >+		dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n",
> >+				tag, ktime_to_us(lrbp->complete_time_stamp));
> > 		dev_err(hba->dev,
> > 			"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
> > 			tag, (u64)lrbp->utrd_dma_addr);
> >@@ -1746,6 +1748,7 @@ static inline
> > void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
> > {
> > 	hba->lrb[task_tag].issue_time_stamp = ktime_get();
> >+	hba->lrb[task_tag].complete_time_stamp.tv64 = 0UL;
> 
> can we use ktime_set(0, 0)?
> complete_time_stamp = ktime_set(0, 0);

Sure.

> 
> 
> > 	ufshcd_clk_scaling_start_busy(hba);
> > 	__set_bit(task_tag, &hba->outstanding_reqs);
> > 	ufshcd_writel(hba, 1 << task_tag, REG_UTP_TRANSFER_REQ_DOOR_BELL);
> >@@ -4627,6 +4630,8 @@ static void __ufshcd_transfer_req_compl(struct
> >ufs_hba *hba,
> > 		}
> > 		if (ufshcd_is_clkscaling_supported(hba))
> > 			hba->clk_scaling.active_reqs--;
> >+
> >+		lrbp->complete_time_stamp = ktime_get();
> > 	}
> >
> > 	/* clear corresponding bits of completed commands */
> >diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
> >index cdc8bd05f7df..67a8f8ef1b06 100644
> >--- a/drivers/scsi/ufs/ufshcd.h
> >+++ b/drivers/scsi/ufs/ufshcd.h
> >@@ -166,6 +166,7 @@ struct ufs_pm_lvl_states {
> >  * @lun: LUN of the command
> >  * @intr_cmd: Interrupt command (doesn't participate in interrupt
> >aggregation)
> >  * @issue_time_stamp: time stamp for debug purposes
> >+ * @complete_time_stamp: time stamp for statistics
> >  * @req_abort_skip: skip request abort task flag
> >  */
> > struct ufshcd_lrb {
> >@@ -189,6 +190,7 @@ struct ufshcd_lrb {
> > 	u8 lun; /* UPIU LUN id field is only 8-bit wide */
> > 	bool intr_cmd;
> > 	ktime_t issue_time_stamp;
> >+	ktime_t complete_time_stamp;
> 
> Just a suggestion for short name, s/complete/compl ? or s/complete/cmpl ?

Accept. compl look better.

> 
> >
> > 	bool req_abort_skip;
> > };
> 
> -- 
> The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> a Linux Foundation Collaborative Project
diff mbox

Patch

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 794a4600e952..2984f33095be 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -385,6 +385,8 @@  void ufshcd_print_trs(struct ufs_hba *hba, unsigned long bitmap, bool pr_prdt)
 
 		dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
 				tag, ktime_to_us(lrbp->issue_time_stamp));
+		dev_err(hba->dev, "UPIU[%d] - complete time %lld us\n",
+				tag, ktime_to_us(lrbp->complete_time_stamp));
 		dev_err(hba->dev,
 			"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
 			tag, (u64)lrbp->utrd_dma_addr);
@@ -1746,6 +1748,7 @@  static inline
 void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
 {
 	hba->lrb[task_tag].issue_time_stamp = ktime_get();
+	hba->lrb[task_tag].complete_time_stamp.tv64 = 0UL;
 	ufshcd_clk_scaling_start_busy(hba);
 	__set_bit(task_tag, &hba->outstanding_reqs);
 	ufshcd_writel(hba, 1 << task_tag, REG_UTP_TRANSFER_REQ_DOOR_BELL);
@@ -4627,6 +4630,8 @@  static void __ufshcd_transfer_req_compl(struct ufs_hba *hba,
 		}
 		if (ufshcd_is_clkscaling_supported(hba))
 			hba->clk_scaling.active_reqs--;
+
+		lrbp->complete_time_stamp = ktime_get();
 	}
 
 	/* clear corresponding bits of completed commands */
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index cdc8bd05f7df..67a8f8ef1b06 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -166,6 +166,7 @@  struct ufs_pm_lvl_states {
  * @lun: LUN of the command
  * @intr_cmd: Interrupt command (doesn't participate in interrupt aggregation)
  * @issue_time_stamp: time stamp for debug purposes
+ * @complete_time_stamp: time stamp for statistics
  * @req_abort_skip: skip request abort task flag
  */
 struct ufshcd_lrb {
@@ -189,6 +190,7 @@  struct ufshcd_lrb {
 	u8 lun; /* UPIU LUN id field is only 8-bit wide */
 	bool intr_cmd;
 	ktime_t issue_time_stamp;
+	ktime_t complete_time_stamp;
 
 	bool req_abort_skip;
 };