diff options
| author | Sayali Lokhande <sayalil@codeaurora.org> | 2017-09-20 19:39:18 +0530 |
|---|---|---|
| committer | Sayali Lokhande <sayalil@codeaurora.org> | 2017-11-29 11:11:42 +0530 |
| commit | cf2ea6ea6a74e26f2d3edad18a6e261e27978c26 (patch) | |
| tree | f5df8b8ecf8d4302e51aba2f4951241b31b79f58 /drivers | |
| parent | 2e22873571a7e0d6b8e9f54943de851598c8863c (diff) | |
scsi: ufs: Add counter for hibernate and gear switch
This change adds few more debugfs entries to capture
statistics regarding the ufs driver.
This information include:
1. ufs hibernate exit count
2. ufs power mode change count
usage : cat /sys/kernel/debug/ufshcd0/show_hba
Change-Id: I75ac694c1f7e98d527392372300d16ad911ac512
Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/scsi/ufs/ufs-debugfs.c | 6 | ||||
| -rw-r--r-- | drivers/scsi/ufs/ufshcd.c | 4 | ||||
| -rw-r--r-- | drivers/scsi/ufs/ufshcd.h | 1 |
3 files changed, 7 insertions, 4 deletions
diff --git a/drivers/scsi/ufs/ufs-debugfs.c b/drivers/scsi/ufs/ufs-debugfs.c index 0547853c4f3a..51eef0d5e95c 100644 --- a/drivers/scsi/ufs/ufs-debugfs.c +++ b/drivers/scsi/ufs/ufs-debugfs.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. +/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -950,6 +950,10 @@ static int ufsdbg_show_hba_show(struct seq_file *file, void *data) seq_printf(file, "hba->saved_err = 0x%x\n", hba->saved_err); seq_printf(file, "hba->saved_uic_err = 0x%x\n", hba->saved_uic_err); + seq_printf(file, "power_mode_change_cnt = %d\n", + hba->ufs_stats.power_mode_change_cnt); + seq_printf(file, "hibern8_exit_cnt = %d\n", + hba->ufs_stats.hibern8_exit_cnt); return 0; } diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 34109bbe69ac..7fd8ffe17707 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -4729,6 +4729,7 @@ int ufshcd_change_power_mode(struct ufs_hba *hba, memcpy(&hba->pwr_info, pwr_mode, sizeof(struct ufs_pa_layer_attr)); + hba->ufs_stats.power_mode_change_cnt++; } return ret; @@ -7450,9 +7451,6 @@ static void ufshcd_clear_dbg_ufs_stats(struct ufs_hba *hba) { int err_reg_hist_size = sizeof(struct ufs_uic_err_reg_hist); - hba->ufs_stats.hibern8_exit_cnt = 0; - hba->ufs_stats.last_hibern8_exit_tstamp = ktime_set(0, 0); - memset(&hba->ufs_stats.pa_err, 0, err_reg_hist_size); memset(&hba->ufs_stats.dl_err, 0, err_reg_hist_size); memset(&hba->ufs_stats.nl_err, 0, err_reg_hist_size); diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index dbc80848ed8b..5a7cf839b4fd 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -638,6 +638,7 @@ struct ufs_stats { struct ufshcd_clk_ctx clk_rel; u32 hibern8_exit_cnt; ktime_t last_hibern8_exit_tstamp; + u32 power_mode_change_cnt; struct ufs_uic_err_reg_hist pa_err; struct ufs_uic_err_reg_hist dl_err; struct ufs_uic_err_reg_hist nl_err; |
