Message ID | 1642699582-14785-1-git-send-email-quic_c_sbhanu@quicinc.com |
---|---|
Headers | show |
Series | mmc: add error statistics for eMMC and SD card | expand |
On 20/01/2022 19:26, Shaik Sajida Bhanu wrote: > Add changes to capture eMMC and SD card errors. > This is useful for debug and testing. > > Signed-off-by: Shaik Sajida Bhanu <quic_c_sbhanu@quicinc.com> > Signed-off-by: Liangliang Lu <luliang@codeaurora.org> > Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org> > Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > --- > drivers/mmc/core/core.c | 8 ++++++++ > drivers/mmc/core/queue.c | 3 +++ > 2 files changed, 11 insertions(+) > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c > index 368f104..c586d69 100644 > --- a/drivers/mmc/core/core.c > +++ b/drivers/mmc/core/core.c > @@ -2242,6 +2242,14 @@ void mmc_rescan(struct work_struct *work) > if (freqs[i] <= host->f_min) > break; > } > + > + /* > + * Ignore the command timeout errors observed during > + * the card init as those are excepted. > + */ > + Please remove blank line here. > + if (host && host->err_stats_enabled) The condition is not needed. > + host->err_stats[MMC_ERR_CMD_TIMEOUT] = 0; Please put this after successful call to mmc_rescan_try_freq > mmc_release_host(host); > > out: > diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c > index c69b2d9..7dc9dfb 100644 > --- a/drivers/mmc/core/queue.c > +++ b/drivers/mmc/core/queue.c > @@ -100,6 +100,9 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req) > enum mmc_issue_type issue_type = mmc_issue_type(mq, req); > bool recovery_needed = false; > > + if (host->err_stats_enabled) > + mmc_debugfs_err_stats_inc(host, MMC_ERR_CMDQ_REQ_TIMEOUT); Doesn't this get covered by the drivers. It seems like this should not be needed. > + > switch (issue_type) { > case MMC_ISSUE_ASYNC: > case MMC_ISSUE_DCMD: >
On 20/01/2022 19:26, Shaik Sajida Bhanu wrote: > Add changes to capture eMMC and SD card errors. > This is useful for debug and testing. > > Signed-off-by: Shaik Sajida Bhanu <quic_c_sbhanu@quicinc.com> > Signed-off-by: Liangliang Lu <luliang@codeaurora.org> > Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org> > Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > --- > drivers/mmc/host/cqhci-core.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c > index b0d30c3..2908d30 100644 > --- a/drivers/mmc/host/cqhci-core.c > +++ b/drivers/mmc/host/cqhci-core.c > @@ -822,8 +822,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error, > pr_debug("%s: cqhci: IRQ status: 0x%08x\n", mmc_hostname(mmc), status); > > if ((status & (CQHCI_IS_RED | CQHCI_IS_GCE | CQHCI_IS_ICCE)) || > - cmd_error || data_error) > + cmd_error || data_error) { > + if ((status & CQHCI_IS_RED) && mmc->err_stats_enabled) > + mmc_debugfs_err_stats_inc(mmc, MMC_ERR_CMDQ_RED); > + if ((status & CQHCI_IS_GCE) && (mmc->err_stats_enabled)) > + mmc_debugfs_err_stats_inc(mmc, MMC_ERR_CMDQ_GCE); > + if ((status & CQHCI_IS_ICCE) && mmc->err_stats_enabled) > + mmc_debugfs_err_stats_inc(mmc, MMC_ERR_CMDQ_ICCE); Please don't check mmc->err_stats_enabled > cqhci_error_irq(mmc, status, cmd_error, data_error); > + } > > if (status & CQHCI_IS_TCC) { > /* read TCN and complete the request */ >
Hi, Thanks for the review. Please find the inline comments. Thanks, Sajida -----Original Message----- From: Adrian Hunter <adrian.hunter@intel.com> Sent: Friday, January 21, 2022 1:50 PM To: Sajida Bhanu (Temp) (QUIC) <quic_c_sbhanu@quicinc.com>; Asutosh Das (QUIC) <quic_asutoshd@quicinc.com>; ulf.hansson@linaro.org; agross@kernel.org; bjorn.andersson@linaro.org; linux-mmc@vger.kernel.org; linux-arm-msm@vger.kernel.org; linux-kernel@vger.kernel.org Cc: stummala@codeaurora.org; vbadigan@codeaurora.org; Ram Prakash Gupta (QUIC) <quic_rampraka@quicinc.com>; Pradeep Pragallapati (QUIC) <quic_pragalla@quicinc.com>; sartgarg@codeaurora.org; nitirawa@codeaurora.org; sayalil@codeaurora.org; Liangliang Lu <luliang@codeaurora.org>; Bao D . Nguyen <nguyenb@codeaurora.org> Subject: Re: [PATCH V3 3/4] mmc: core: Capture eMMC and SD card errors On 20/01/2022 19:26, Shaik Sajida Bhanu wrote: > Add changes to capture eMMC and SD card errors. > This is useful for debug and testing. > > Signed-off-by: Shaik Sajida Bhanu <quic_c_sbhanu@quicinc.com> > Signed-off-by: Liangliang Lu <luliang@codeaurora.org> > Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org> > Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > --- > drivers/mmc/core/core.c | 8 ++++++++ drivers/mmc/core/queue.c | 3 > +++ > 2 files changed, 11 insertions(+) > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index > 368f104..c586d69 100644 > --- a/drivers/mmc/core/core.c > +++ b/drivers/mmc/core/core.c > @@ -2242,6 +2242,14 @@ void mmc_rescan(struct work_struct *work) > if (freqs[i] <= host->f_min) > break; > } > + > + /* > + * Ignore the command timeout errors observed during > + * the card init as those are excepted. > + */ > + Please remove blank line here. >>>>Sure. > + if (host && host->err_stats_enabled) The condition is not needed. >>>>Sure . > + host->err_stats[MMC_ERR_CMD_TIMEOUT] = 0; Please put this after successful call to mmc_rescan_try_freq >>>>>Sure. > mmc_release_host(host); > > out: > diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index > c69b2d9..7dc9dfb 100644 > --- a/drivers/mmc/core/queue.c > +++ b/drivers/mmc/core/queue.c > @@ -100,6 +100,9 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req) > enum mmc_issue_type issue_type = mmc_issue_type(mq, req); > bool recovery_needed = false; > > + if (host->err_stats_enabled) > + mmc_debugfs_err_stats_inc(host, MMC_ERR_CMDQ_REQ_TIMEOUT); Doesn't this get covered by the drivers. It seems like this should not be needed. >>>>>>Okay > + > switch (issue_type) { > case MMC_ISSUE_ASYNC: > case MMC_ISSUE_DCMD: >
Hi, Thanks for the review. Please find the inline comments. Thanks, Sajida -----Original Message----- From: Adrian Hunter <adrian.hunter@intel.com> Sent: Friday, January 21, 2022 1:52 PM To: Sajida Bhanu (Temp) (QUIC) <quic_c_sbhanu@quicinc.com>; Asutosh Das (QUIC) <quic_asutoshd@quicinc.com>; ulf.hansson@linaro.org; agross@kernel.org; bjorn.andersson@linaro.org; linux-mmc@vger.kernel.org; linux-arm-msm@vger.kernel.org; linux-kernel@vger.kernel.org Cc: stummala@codeaurora.org; vbadigan@codeaurora.org; Ram Prakash Gupta (QUIC) <quic_rampraka@quicinc.com>; Pradeep Pragallapati (QUIC) <quic_pragalla@quicinc.com>; sartgarg@codeaurora.org; nitirawa@codeaurora.org; sayalil@codeaurora.org; Liangliang Lu <luliang@codeaurora.org>; Bao D . Nguyen <nguyenb@codeaurora.org> Subject: Re: [PATCH V3 4/4] mmc: cqhci: Capture eMMC and SD card errors On 20/01/2022 19:26, Shaik Sajida Bhanu wrote: > Add changes to capture eMMC and SD card errors. > This is useful for debug and testing. > > Signed-off-by: Shaik Sajida Bhanu <quic_c_sbhanu@quicinc.com> > Signed-off-by: Liangliang Lu <luliang@codeaurora.org> > Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org> > Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org> > Signed-off-by: Ram Prakash Gupta <quic_rampraka@quicinc.com> > --- > drivers/mmc/host/cqhci-core.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/cqhci-core.c > b/drivers/mmc/host/cqhci-core.c index b0d30c3..2908d30 100644 > --- a/drivers/mmc/host/cqhci-core.c > +++ b/drivers/mmc/host/cqhci-core.c > @@ -822,8 +822,15 @@ irqreturn_t cqhci_irq(struct mmc_host *mmc, u32 intmask, int cmd_error, > pr_debug("%s: cqhci: IRQ status: 0x%08x\n", mmc_hostname(mmc), > status); > > if ((status & (CQHCI_IS_RED | CQHCI_IS_GCE | CQHCI_IS_ICCE)) || > - cmd_error || data_error) > + cmd_error || data_error) { > + if ((status & CQHCI_IS_RED) && mmc->err_stats_enabled) > + mmc_debugfs_err_stats_inc(mmc, MMC_ERR_CMDQ_RED); > + if ((status & CQHCI_IS_GCE) && (mmc->err_stats_enabled)) > + mmc_debugfs_err_stats_inc(mmc, MMC_ERR_CMDQ_GCE); > + if ((status & CQHCI_IS_ICCE) && mmc->err_stats_enabled) > + mmc_debugfs_err_stats_inc(mmc, MMC_ERR_CMDQ_ICCE); Please don't check mmc->err_stats_enabled >>>>>>>Sure. > cqhci_error_irq(mmc, status, cmd_error, data_error); > + } > > if (status & CQHCI_IS_TCC) { > /* read TCN and complete the request */ >