Skip to content

Commit c616696

Browse files
ahunter6Ulf Hansson
authored andcommitted
mmc: block: Be sure to wait while busy in CQE error recovery
STOP command does not guarantee to wait while busy, but subsequent command MMC_CMDQ_TASK_MGMT to discard the queue will fail if the card is busy, so be sure to wait by employing mmc_poll_for_busy(). Fixes: 72a5af5 ("mmc: core: Add support for handling CQE requests") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Avri Altman <avri.altman@wdc.com> Reviewed-by: Christian Loehle <christian.loehle@arm.com> Link: https://lore.kernel.org/r/20231103084720.6886-4-adrian.hunter@intel.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
1 parent b578d5d commit c616696

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

drivers/mmc/core/core.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,8 @@ int mmc_cqe_recovery(struct mmc_host *host)
553553
cmd.busy_timeout = MMC_CQE_RECOVERY_TIMEOUT;
554554
mmc_wait_for_cmd(host, &cmd, 0);
555555

556+
mmc_poll_for_busy(host->card, MMC_CQE_RECOVERY_TIMEOUT, true, MMC_BUSY_IO);
557+
556558
memset(&cmd, 0, sizeof(cmd));
557559
cmd.opcode = MMC_CMDQ_TASK_MGMT;
558560
cmd.arg = 1; /* Discard entire queue */

0 commit comments

Comments
 (0)