Messages in this thread | | | From | Ulf Hansson <> | Date | Thu, 23 Sep 2021 20:49:35 +0200 | Subject | Re: [PATCH] mmc: dw_mmc: Dont wait for DRTO on Write RSP error |
| |
On Thu, 16 Sept 2021 at 07:59, Christian Löhle <CLoehle@hyperstone.com> wrote: > > Only wait for DRTO on reads, otherwise the driver hangs. > > The driver prevents sending CMD12 on response errors like CRCs. > According to the comment this is because some cards have problems > with this during the UHS tuning sequence. > Unfortunately this workaround currently also applies for any command > with data. > On reads this will set the drto timer which then triggers after a while. > On writes this will not set any timer and the tasklet will not be > scheduled again. > I cannot attest for the UHS workarounds need, but even if so, it should > at most apply to reads. > I have observed many hangs when CMD25 response contained a CRC error. > This patch fixes this without touching the actual UHS tuning workaround. > > Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
Applied for next and by adding a stable tag, thanks!
If you don't think we need the stable tag, please tell me.
Kind regards Uffe
> --- > drivers/mmc/host/dw_mmc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index 6578cc64ae9e..22cf13dc799b 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -2081,7 +2081,8 @@ static void dw_mci_tasklet_func(struct tasklet_struct *t) > * delayed. Allowing the transfer to take place > * avoids races and keeps things simple. > */ > - if (err != -ETIMEDOUT) { > + if (err != -ETIMEDOUT && > + host->dir_status == DW_MCI_RECV_STATUS) { > state = STATE_SENDING_DATA; > continue; > } > -- > 2.32.0 > Hyperstone GmbH | Line-Eid-Strasse 3 | 78467 Konstanz > Managing Directors: Dr. Jan Peter Berns. > Commercial register of local courts: Freiburg HRB381782 >
| |