[PATCH] mmc: dw_mmc: Wait for data transfer after response errors

From: Enric Balletbo Serra
Date: Thu Mar 17 2016 - 08:12:32 EST

Dear all,

Seems the following thread[1] didn't go anywhere. I'd like to continue
the discussion and share some tests that I did regarding the issue
that the patch is trying to fix.

First I reproduced the issue on my rockchip board and I tested the
patch intensively, I can confirm that the patch made by Doug fixes the
issue.But, as reported by Alim, seems that this patch has the side
effect that breaks mmc on peach-pi board [2], specially on
suspend/resume, I ran lots of tests on peach-pi and, although is a bit
random, I can also confirm the breakage.

Looks like that on peach-pi, when the patch is applied the controller
moves into a data transfer and the interrupt does not come, then the
task blocks. The reason why I think the dw_mmc-rockchip driver works
is because it has the DW_MCI_QUIRK_BROKEN_DTO quirk [3].

So I did lots of tests on peach-pi with dto quirk, suspend/resume
started to work again. But I guess this is not the proper solution or
it is? Thoughts?

[1] https://lkml.org/lkml/2015/5/18/495
[2] https://lava.collabora.co.uk/scheduler/job/169384/log_file#L_195_5
[3] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/mmc/host/dw_mmc-rockchip.c?id=57e104864bc4874a36796fd222d8d084dbf90b9b


> Alim,
> On Tue, May 26, 2015 at 11:02 AM, Alim Akhtar <alim.akhtar@xxxxxxxxx> wrote:
>> Hi Doug,
>> On peach-pi, I got a hung task once in 4 cold boot as [1].
> OK, I'll have to get my peach-pi or peach-pit up and running again. I
> ran out of desk space and I haven't gotten it set back up. :(
> I've been testing on an rk3288-based device. Past experience has
> taught me that the rk3288 dw_mmc works differently than the exynos
> one, so perhaps this is a difference.
> Could you possibly patch in something like
> <https://chromium-review.googlesource.com/#/c/244347/> and provide the
> console for the failure? I'll put it on my list to try this myself,
> too
>> I was checking on v4.1-rc5, git hash as below:
>> 862e58a mmc: dw_mmc: Wait for data transfer after response errors
>> ba155e2 Linux 4.1-rc5
>> 5b13966
>> Not sure if I missed any dependent patch??
> I'm currently testing out of tree, but my dw_mmc is very close to mainline.
>> Have not checked the dw TRM for this change, will do that as soon as I
>> get access to it.
> OK, sounds good. I have some old version of the DesignWare TRM, so
> possibly something is different in the newer one...
> -Doug
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html