From patchwork Fri Feb 21 09:39:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 13985097 Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [185.203.201.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93359205E1C for ; Fri, 21 Feb 2025 09:39:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.203.201.7 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740130771; cv=none; b=fifhqsLZR1Af43RrAp+PogIo0jOA+2VToFPsYNba8HHtDvnKV83TsN/iFC+afzzIIJ8cDaAn1GDnxOrNId0Gu7xF5aQi42wD4sLSUSY9Jmnu4bumReCSo5Al258qVHqPdF4ctRJH+FzAVfI/+15QXnjGOe2EJut+3bif3IqTo4w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740130771; c=relaxed/simple; bh=jBP3yn8EoczVygvEooEdxOeCaOGnWGEZlmynb+kkie8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ld6lGpRHsVoQvJ0rOKCvaBxpQEt3YvTJ4j2O7toWhmf3f2DWavCk19gY3XcMsftIU0C2kG5O9X04avVliYdGqx7hKGnH9rs0N/Lgpv2F7xu1rQZZaenBdRSRwfRnJJ0qoq6gKS5roUIBdUuJZ3Zxokt8T+yVn0Z5O7+ezNuUnVw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de; spf=pass smtp.mailfrom=pengutronix.de; arc=none smtp.client-ip=185.203.201.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pengutronix.de Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1tlPV9-0001zX-QE; Fri, 21 Feb 2025 10:39:19 +0100 Received: from dude04.red.stw.pengutronix.de ([2a0a:edc0:0:1101:1d::ac]) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tlPV9-0024uy-1S; Fri, 21 Feb 2025 10:39:19 +0100 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.96) (envelope-from ) id 1tlPV9-00GXc4-1F; Fri, 21 Feb 2025 10:39:19 +0100 From: Oleksij Rempel To: Ulf Hansson Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org, Greg Kroah-Hartman , Mark Brown , "Rafael J. Wysocki" , =?utf-8?q?S=C3=B8ren_Andersen?= , Christian Loehle Subject: [PATCH v3 5/6] mmc: block: abort requests and suppress errors after undervoltage shutdown Date: Fri, 21 Feb 2025 10:39:17 +0100 Message-Id: <20250221093918.3942378-6-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250221093918.3942378-1-o.rempel@pengutronix.de> References: <20250221093918.3942378-1-o.rempel@pengutronix.de> Precedence: bulk X-Mailing-List: linux-mmc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-mmc@vger.kernel.org Extend the existing card removal checks in mmc_blk_mq_complete_rq() and mmc_mq_queue_rq() to also account for the undervoltage state. If the host has entered undervoltage shutdown, mark requests as quiet and abort them early to prevent unnecessary retries and error logging. This ensures no further operations are attempted on the card after an emergency stop. Signed-off-by: Oleksij Rempel --- drivers/mmc/core/block.c | 2 +- drivers/mmc/core/queue.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 4830628510e6..ecb87da0e257 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -2129,7 +2129,7 @@ static void mmc_blk_mq_complete_rq(struct mmc_queue *mq, struct request *req) } else if (mqrq->retries++ < MMC_MAX_RETRIES) { blk_mq_requeue_request(req, true); } else { - if (mmc_card_removed(mq->card)) + if (mmc_card_removed(mq->card) || mq->card->host->undervoltage) req->rq_flags |= RQF_QUIET; blk_mq_end_request(req, BLK_STS_IOERR); } diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index ab662f502fe7..f46e01988fe8 100644 --- a/drivers/mmc/core/queue.c +++ b/drivers/mmc/core/queue.c @@ -239,7 +239,7 @@ static blk_status_t mmc_mq_queue_rq(struct blk_mq_hw_ctx *hctx, bool get_card, cqe_retune_ok; blk_status_t ret; - if (mmc_card_removed(mq->card)) { + if (mmc_card_removed(mq->card) || mq->card->host->undervoltage) { req->rq_flags |= RQF_QUIET; return BLK_STS_IOERR; }