> Failing to halt complicates the recovery. Additionally, unless the card or > controller are stuck, which is expected to be very rare, then the halt should > succeed, so it is better to wait. Set a large timeout. Maybe also explain that If task queuing is in progress, CQE needs to complete the operation, sending both commands and processing the responses. > > Fixes: a4080225f51d ("mmc: cqhci: support for command queue enabled > host") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> Reviewed-by: Avri Altman <avri.altman@xxxxxxx> > --- > drivers/mmc/host/cqhci-core.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c > index b3d7d6d8d654..15f5a069af1f 100644 > --- a/drivers/mmc/host/cqhci-core.c > +++ b/drivers/mmc/host/cqhci-core.c > @@ -984,10 +984,10 @@ static bool cqhci_halt(struct mmc_host *mmc, > unsigned int timeout) > /* > * After halting we expect to be able to use the command line. We interpret > the > * failure to halt to mean the data lines might still be in use (and the upper > - * layers will need to send a STOP command), so we set the timeout based > on a > - * generous command timeout. > + * layers will need to send a STOP command), however failing to halt > + complicates > + * the recovery, so set a timeout that would reasonably allow I/O to > complete. > */ > -#define CQHCI_START_HALT_TIMEOUT 5 > +#define CQHCI_START_HALT_TIMEOUT 500 > > static void cqhci_recovery_start(struct mmc_host *mmc) { > -- > 2.34.1