Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6beb213a authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "mmc: block: send CMD13 when a response error detected in CQ mode"

parents 58d63563 af9aeae5
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -3104,7 +3104,8 @@ static void mmc_blk_cmdq_err(struct mmc_queue *mq)
	struct mmc_request *mrq = host->err_mrq;
	struct mmc_cmdq_context_info *ctx_info = &host->cmdq_ctx;
	struct request_queue *q;
	int err;
	int err, ret;
	u32 status = 0;

	mmc_host_clk_hold(host);
	host->cmdq_ops->dumpstate(host);
@@ -3123,8 +3124,14 @@ static void mmc_blk_cmdq_err(struct mmc_queue *mq)
	/* RED error - Fatal: requires reset */
	if (mrq->cmdq_req->resp_err) {
		err = mrq->cmdq_req->resp_err;
		pr_crit("%s: Response error detected: Device in bad state\n",
			mmc_hostname(host));
		if (mmc_host_halt(host) || mmc_host_cq_disable(host)) {
			ret = get_card_status(host->card, &status, 0);
			if (ret)
				pr_err("%s: CMD13 failed with err %d\n",
						mmc_hostname(host), ret);
		}
		pr_err("%s: Response error detected with device status 0x%08x\n",
			mmc_hostname(host), status);
		goto reset;
	}

+6 −0
Original line number Diff line number Diff line
@@ -1476,6 +1476,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),