lkml.org 
[lkml]   [2021]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.14 017/849] mmc: dw_mmc: Dont wait for DRTO on Write RSP error
    Date
    From: Christian Löhle <CLoehle@hyperstone.com>

    commit 43592c8736e84025d7a45e61a46c3fa40536a364 upstream.

    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 test 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>
    Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/af8f8b8674ba4fcc9a781019e4aeb72c@hyperstone.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/mmc/host/dw_mmc.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/drivers/mmc/host/dw_mmc.c
    +++ b/drivers/mmc/host/dw_mmc.c
    @@ -2014,7 +2014,8 @@ static void dw_mci_tasklet_func(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;
    }

    \
     
     \ /
      Last update: 2021-11-15 22:29    [W:4.022 / U:0.348 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site