scsi: ufs: add ufs a command complete time stamp
Signed-off-by: Zang Leigang <zangleigang@hisilicon.com> Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
479da36057
commit
090171885f
|
@ -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",
|
dev_err(hba->dev, "UPIU[%d] - issue time %lld us\n",
|
||||||
tag, ktime_to_us(lrbp->issue_time_stamp));
|
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,
|
dev_err(hba->dev,
|
||||||
"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
|
"UPIU[%d] - Transfer Request Descriptor phys@0x%llx\n",
|
||||||
tag, (u64)lrbp->utrd_dma_addr);
|
tag, (u64)lrbp->utrd_dma_addr);
|
||||||
|
@ -1746,6 +1748,7 @@ static inline
|
||||||
void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag)
|
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].issue_time_stamp = ktime_get();
|
||||||
|
hba->lrb[task_tag].compl_time_stamp = ktime_set(0, 0);
|
||||||
ufshcd_clk_scaling_start_busy(hba);
|
ufshcd_clk_scaling_start_busy(hba);
|
||||||
__set_bit(task_tag, &hba->outstanding_reqs);
|
__set_bit(task_tag, &hba->outstanding_reqs);
|
||||||
ufshcd_writel(hba, 1 << task_tag, REG_UTP_TRANSFER_REQ_DOOR_BELL);
|
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))
|
if (ufshcd_is_clkscaling_supported(hba))
|
||||||
hba->clk_scaling.active_reqs--;
|
hba->clk_scaling.active_reqs--;
|
||||||
|
|
||||||
|
lrbp->compl_time_stamp = ktime_get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clear corresponding bits of completed commands */
|
/* clear corresponding bits of completed commands */
|
||||||
|
|
|
@ -166,6 +166,7 @@ struct ufs_pm_lvl_states {
|
||||||
* @lun: LUN of the command
|
* @lun: LUN of the command
|
||||||
* @intr_cmd: Interrupt command (doesn't participate in interrupt aggregation)
|
* @intr_cmd: Interrupt command (doesn't participate in interrupt aggregation)
|
||||||
* @issue_time_stamp: time stamp for debug purposes
|
* @issue_time_stamp: time stamp for debug purposes
|
||||||
|
* @compl_time_stamp: time stamp for statistics
|
||||||
* @req_abort_skip: skip request abort task flag
|
* @req_abort_skip: skip request abort task flag
|
||||||
*/
|
*/
|
||||||
struct ufshcd_lrb {
|
struct ufshcd_lrb {
|
||||||
|
@ -189,6 +190,7 @@ struct ufshcd_lrb {
|
||||||
u8 lun; /* UPIU LUN id field is only 8-bit wide */
|
u8 lun; /* UPIU LUN id field is only 8-bit wide */
|
||||||
bool intr_cmd;
|
bool intr_cmd;
|
||||||
ktime_t issue_time_stamp;
|
ktime_t issue_time_stamp;
|
||||||
|
ktime_t compl_time_stamp;
|
||||||
|
|
||||||
bool req_abort_skip;
|
bool req_abort_skip;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue