On 03/11/2023 08:47, Adrian Hunter wrote: > 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: 72a5af554df8 ("mmc: core: Add support for handling CQE requests") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> Reviewed-by: Christian Loehle <christian.loehle@xxxxxxx> > --- > drivers/mmc/core/core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c > index 3d3e0ca52614..befde2bd26d3 100644 > --- a/drivers/mmc/core/core.c > +++ b/drivers/mmc/core/core.c > @@ -553,6 +553,8 @@ int mmc_cqe_recovery(struct mmc_host *host) > cmd.busy_timeout = MMC_CQE_RECOVERY_TIMEOUT; > mmc_wait_for_cmd(host, &cmd, 0); > > + mmc_poll_for_busy(host->card, MMC_CQE_RECOVERY_TIMEOUT, true, MMC_BUSY_IO); > + > memset(&cmd, 0, sizeof(cmd)); > cmd.opcode = MMC_CMDQ_TASK_MGMT; > cmd.arg = 1; /* Discard entire queue */