Message ID | 20170927020606.12151-1-zangleigang@hisilicon.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 2017-09-26 19:06, 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 794a460..7e8d583 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->compl_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].compl_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->compl_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 cdc8bd0..40ea475 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 > + * @compl_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 compl_time_stamp; > > bool req_abort_skip; > }; Looks good to me. Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Zang, Applied to 4.15/scsi-queue. Thank you!
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 794a460..7e8d583 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->compl_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].compl_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->compl_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 cdc8bd0..40ea475 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 + * @compl_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 compl_time_stamp; bool req_abort_skip; };
Signed-off-by: Zang Leigang <zangleigang@hisilicon.com>