summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/card/block.c5
-rw-r--r--drivers/mmc/core/core.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 1e982e0349bc..0ed7d4024fac 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -2972,7 +2972,6 @@ static enum blk_eh_timer_return mmc_blk_cmdq_req_timed_out(struct request *req)
struct mmc_request *mrq = &mq_rq->cmdq_req.mrq;
struct mmc_cmdq_req *cmdq_req = &mq_rq->cmdq_req;
- host->cmdq_ops->dumpstate(host);
if (cmdq_req->cmdq_req_flags & DCMD)
mrq->cmd->error = -ETIMEDOUT;
else
@@ -2997,6 +2996,10 @@ static void mmc_blk_cmdq_err(struct mmc_queue *mq)
struct mmc_cmdq_context_info *ctx_info = &host->cmdq_ctx;
pm_runtime_get_sync(&card->dev);
+ mmc_host_clk_hold(host);
+ host->cmdq_ops->dumpstate(host);
+ mmc_host_clk_release(host);
+
err = mmc_cmdq_halt(host, true);
if (err) {
pr_err("halt: failed: %d\n", err);
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 57961a498a1d..a55facf12e1f 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1547,6 +1547,9 @@ int mmc_cmdq_wait_for_dcmd(struct mmc_host *host,
mmc_hostname(host), cmd->opcode,
cmd->error);
err = cmd->error;
+ mmc_host_clk_hold(host);
+ host->cmdq_ops->dumpstate(host);
+ mmc_host_clk_release(host);
}
return err;
}