All of lore.kernel.org
 help / color / mirror / Atom feed
From: hongwus@codeaurora.org
To: Can Guo <cang@codeaurora.org>
Cc: asutoshd@codeaurora.org, nguyenb@codeaurora.org,
	rnayak@codeaurora.org, sh425.lee@samsung.com,
	linux-scsi@vger.kernel.org, kernel-team@android.com,
	saravanak@google.com, salyzyn@google.com,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Avri Altman <avri.altman@wdc.com>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Stanley Chu <stanley.chu@mediatek.com>,
	Bean Huo <beanhuo@micron.com>,
	Bart Van Assche <bvanassche@acm.org>,
	Satya Tangirala <satyat@google.com>,
	linux-kernel@vger.kernel.org, linux-scsi-owner@vger.kernel.org
Subject: Re: [PATCH v7 4/8] scsi: ufs: Add some debug infos to ufshcd_print_host_state
Date: Tue, 28 Jul 2020 13:32:39 +0800	[thread overview]
Message-ID: <444570ffdd0f34dcf83f7fe49593e601@codeaurora.org> (raw)
In-Reply-To: <1595912460-8860-5-git-send-email-cang@codeaurora.org>

On 2020-07-28 13:00, Can Guo wrote:
> The infos of the last interrupt status and its timestamp are very 
> helpful
> when debug system stability issues, e.g. IRQ starvation, so add them to
> ufshcd_print_host_state. Meanwhile, UFS device infos like model name 
> and
> its FW version also come in handy during debug. In addition, this 
> change
> makes cleanup to some prints in ufshcd_print_host_regs as similar 
> prints
> are already available in ufshcd_print_host_state.
> 
> Signed-off-by: Can Guo <cang@codeaurora.org>
> Reviewed-by: Avri Altman <avri.altman@wdc.com>
> ---
>  drivers/scsi/ufs/ufshcd.c | 31 ++++++++++++++++++-------------
>  drivers/scsi/ufs/ufshcd.h |  5 +++++
>  2 files changed, 23 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index 99bd3e4..eda4dc6 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -411,15 +411,6 @@ static void ufshcd_print_err_hist(struct ufs_hba 
> *hba,
>  static void ufshcd_print_host_regs(struct ufs_hba *hba)
>  {
>  	ufshcd_dump_regs(hba, 0, UFSHCI_REG_SPACE_SIZE, "host_regs: ");
> -	dev_err(hba->dev, "hba->ufs_version = 0x%x, hba->capabilities = 
> 0x%x\n",
> -		hba->ufs_version, hba->capabilities);
> -	dev_err(hba->dev,
> -		"hba->outstanding_reqs = 0x%x, hba->outstanding_tasks = 0x%x\n",
> -		(u32)hba->outstanding_reqs, (u32)hba->outstanding_tasks);
> -	dev_err(hba->dev,
> -		"last_hibern8_exit_tstamp at %lld us, hibern8_exit_cnt = %d\n",
> -		ktime_to_us(hba->ufs_stats.last_hibern8_exit_tstamp),
> -		hba->ufs_stats.hibern8_exit_cnt);
> 
>  	ufshcd_print_err_hist(hba, &hba->ufs_stats.pa_err, "pa_err");
>  	ufshcd_print_err_hist(hba, &hba->ufs_stats.dl_err, "dl_err");
> @@ -438,8 +429,6 @@ static void ufshcd_print_host_regs(struct ufs_hba 
> *hba)
>  	ufshcd_print_err_hist(hba, &hba->ufs_stats.host_reset, "host_reset");
>  	ufshcd_print_err_hist(hba, &hba->ufs_stats.task_abort, "task_abort");
> 
> -	ufshcd_print_clk_freqs(hba);
> -
>  	ufshcd_vops_dbg_register_dump(hba);
>  }
> 
> @@ -499,6 +488,8 @@ static void ufshcd_print_tmrs(struct ufs_hba *hba,
> unsigned long bitmap)
> 
>  static void ufshcd_print_host_state(struct ufs_hba *hba)
>  {
> +	struct scsi_device *sdev_ufs = hba->sdev_ufs_device;
> +
>  	dev_err(hba->dev, "UFS Host state=%d\n", hba->ufshcd_state);
>  	dev_err(hba->dev, "outstanding reqs=0x%lx tasks=0x%lx\n",
>  		hba->outstanding_reqs, hba->outstanding_tasks);
> @@ -511,12 +502,24 @@ static void ufshcd_print_host_state(struct 
> ufs_hba *hba)
>  	dev_err(hba->dev, "Auto BKOPS=%d, Host self-block=%d\n",
>  		hba->auto_bkops_enabled, hba->host->host_self_blocked);
>  	dev_err(hba->dev, "Clk gate=%d\n", hba->clk_gating.state);
> +	dev_err(hba->dev,
> +		"last_hibern8_exit_tstamp at %lld us, hibern8_exit_cnt=%d\n",
> +		ktime_to_us(hba->ufs_stats.last_hibern8_exit_tstamp),
> +		hba->ufs_stats.hibern8_exit_cnt);
> +	dev_err(hba->dev, "last intr at %lld us, last intr status=0x%x\n",
> +		ktime_to_us(hba->ufs_stats.last_intr_ts),
> +		hba->ufs_stats.last_intr_status);
>  	dev_err(hba->dev, "error handling flags=0x%x, req. abort count=%d\n",
>  		hba->eh_flags, hba->req_abort_count);
> -	dev_err(hba->dev, "Host capabilities=0x%x, caps=0x%x\n",
> -		hba->capabilities, hba->caps);
> +	dev_err(hba->dev, "hba->ufs_version=0x%x, Host capabilities=0x%x,
> caps=0x%x\n",
> +		hba->ufs_version, hba->capabilities, hba->caps);
>  	dev_err(hba->dev, "quirks=0x%x, dev. quirks=0x%x\n", hba->quirks,
>  		hba->dev_quirks);
> +	if (sdev_ufs)
> +		dev_err(hba->dev, "UFS dev info: %.8s %.16s rev %.4s\n",
> +			sdev_ufs->vendor, sdev_ufs->model, sdev_ufs->rev);
> +
> +	ufshcd_print_clk_freqs(hba);
>  }
> 
>  /**
> @@ -5951,6 +5954,8 @@ static irqreturn_t ufshcd_intr(int irq, void 
> *__hba)
> 
>  	spin_lock(hba->host->host_lock);
>  	intr_status = ufshcd_readl(hba, REG_INTERRUPT_STATUS);
> +	hba->ufs_stats.last_intr_status = intr_status;
> +	hba->ufs_stats.last_intr_ts = ktime_get();
> 
>  	/*
>  	 * There could be max of hba->nutrs reqs in flight and in worst case
> diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
> index 656c069..5b2cdaf 100644
> --- a/drivers/scsi/ufs/ufshcd.h
> +++ b/drivers/scsi/ufs/ufshcd.h
> @@ -406,6 +406,8 @@ struct ufs_err_reg_hist {
> 
>  /**
>   * struct ufs_stats - keeps usage/err statistics
> + * @last_intr_status: record the last interrupt status.
> + * @last_intr_ts: record the last interrupt timestamp.
>   * @hibern8_exit_cnt: Counter to keep track of number of exits,
>   *		reset this after link-startup.
>   * @last_hibern8_exit_tstamp: Set time after the hibern8 exit.
> @@ -425,6 +427,9 @@ struct ufs_err_reg_hist {
>   * @tsk_abort: tracks task abort events
>   */
>  struct ufs_stats {
> +	u32 last_intr_status;
> +	ktime_t last_intr_ts;
> +
>  	u32 hibern8_exit_cnt;
>  	ktime_t last_hibern8_exit_tstamp;

Reviewed-by: Hongwu Su <hongwus@codeaurora.org>

  reply	other threads:[~2020-07-28  5:33 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-28  5:00 [PATCH v7 0/8] Fix up and simplify error recovery mechanism Can Guo
2020-07-28  5:00 ` [PATCH v7 1/8] scsi: ufs: Add checks before setting clk-gating states Can Guo
2020-07-29  6:47   ` Stanley Chu
2020-07-28  5:00 ` [PATCH v7 2/8] ufs: ufs-qcom: Fix race conditions caused by func ufs_qcom_testbus_config Can Guo
2020-07-28  5:00 ` [PATCH v7 3/8] scsi: ufs-qcom: Remove testbus dump in ufs_qcom_dump_dbg_regs Can Guo
2020-07-28  5:32   ` hongwus
2020-07-28  7:53   ` Avri Altman
2020-07-28  5:00 ` [PATCH v7 4/8] scsi: ufs: Add some debug infos to ufshcd_print_host_state Can Guo
2020-07-28  5:32   ` hongwus [this message]
2020-07-28 18:01   ` Asutosh Das (asd)
2020-07-29  7:00   ` Stanley Chu
2020-07-28  5:00 ` [PATCH v7 5/8] scsi: ufs: Fix concurrency of error handler and other error recovery paths Can Guo
2020-07-28  5:00 ` [PATCH v7 6/8] scsi: ufs: Recover hba runtime PM error in error handler Can Guo
2020-07-28  5:00 ` [PATCH v7 7/8] scsi: ufs: Move dumps in IRQ handler to " Can Guo
2020-07-28 18:06   ` Asutosh Das (asd)
2020-07-29 13:02     ` Can Guo
2020-07-29 22:45       ` Asutosh Das (asd)
2020-07-28  5:00 ` [PATCH v7 8/8] scsi: ufs: Fix a racing problem btw error handler and runtime PM ops Can Guo
2020-07-28 21:44 ` [PATCH v7 0/8] Fix up and simplify error recovery mechanism Bean Huo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=444570ffdd0f34dcf83f7fe49593e601@codeaurora.org \
    --to=hongwus@codeaurora.org \
    --cc=alim.akhtar@samsung.com \
    --cc=asutoshd@codeaurora.org \
    --cc=avri.altman@wdc.com \
    --cc=beanhuo@micron.com \
    --cc=bvanassche@acm.org \
    --cc=cang@codeaurora.org \
    --cc=jejb@linux.ibm.com \
    --cc=kernel-team@android.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi-owner@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=nguyenb@codeaurora.org \
    --cc=rnayak@codeaurora.org \
    --cc=salyzyn@google.com \
    --cc=saravanak@google.com \
    --cc=satyat@google.com \
    --cc=sh425.lee@samsung.com \
    --cc=stanley.chu@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.