From 9b97ea99ee9b6647175ed9df724b85f62fc0fbe3 Mon Sep 17 00:00:00 2001 From: Sahitya Tummala Date: Tue, 26 Apr 2016 15:00:04 +0530 Subject: [PATCH] mmc: core: check if CQE is already disabled before halt/unhalt Upon any CQ error, the driver tries to halt the CQE first and if it fails to halt, then CQE is disabled. The error handling work function mmc_blk_cmdq_err() also tries to HALT the CQE at couple of places and takes some action based on the HALT success/error status. But since CQE is disabled, we should not treat any errors of CQE halt/unhalt as critical and in fact, we should not even attempt to halt/unhalt. Change-Id: I6bef9f2c033f78ad0959954acc5d7627e8a92139 Signed-off-by: Sahitya Tummala Signed-off-by: Sayali Lokhande --- drivers/mmc/core/core.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 828d2b85f6e4..6ad91042409e 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -1552,6 +1552,12 @@ int mmc_cmdq_halt(struct mmc_host *host, bool halt) { int err = 0; + if (mmc_host_cq_disable(host)) { + pr_debug("%s: %s: CQE is already disabled\n", + mmc_hostname(host), __func__); + return 0; + } + if ((halt && mmc_host_halt(host)) || (!halt && !mmc_host_halt(host))) { pr_debug("%s: %s: CQE is already %s\n", mmc_hostname(host),