Message ID | 20170920103040.20613-1-zangleigang@hisilicon.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
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; > };
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 --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; };
Signed-off-by: Zang Leigang <zangleigang@hisilicon.com>