On Friday, September 11, 2015 at 09:59:32 AM, Alexey Brodkin wrote:
> Hi Marek,

Hi!

> On Mon, 2015-07-27 at 22:39 +-0200, Marek Vasut wrote:
> +AD4- Endless timeouts are bad, since if we get stuck in one, we have no
> +AD4- way out. Zap this one by implementing proper timeout.
> +AD4-
> +AD4- Signed-off-by: Marek Vasut +ADw-marex+AEA-denx.de+AD4-
> +AD4- Cc: Dinh Nguyen +ADw-dinguyen+AEA-opensource.altera.com+AD4-
> +AD4- Cc: Pantelis Antoniou +ADw-panto+AEA-antoniou-consulting.com+AD4-
> +AD4- Cc: Tom Rini +ADw-trini+AEA-konsulko.com+AD4-
> +AD4- ---
> +AD4-  drivers/mmc/dw+AF8-mmc.c +AHw- 19
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--- +AD4-  1 file changed, 17
> insertions(+-), 2 deletions(-)
> +AD4-
> +AD4- diff --git a/drivers/mmc/dw+AF8-mmc.c b/drivers/mmc/dw+AF8-mmc.c
> +AD4- index 3fffa71..0f61f16 100644
> +AD4- --- a/drivers/mmc/dw+AF8-mmc.c
> +AD4- +-+-+- b/drivers/mmc/dw+AF8-mmc.c
> +AD4- +AEAAQA- -211,14 +-211,29 +AEAAQA- static int
> dwmci+AF8-send+AF8-cmd(struct mmc +ACo-mmc, struct mmc+AF8-cmd +ACo-cmd,
> +AD4-         +AH0-
> +AD4-
> +AD4-         if (data) +AHs-
> +AD4- -               do +AHs-
> +AD4- +-              start +AD0- get+AF8-timer(0)+ADs-
> +AD4- +-              timeout +AD0- 1000+ADs-
> +AD4- +-              for (+ADsAOw-) +AHs-
> +AD4-                         mask +AD0- dwmci+AF8-readl(host, DWMCI+AF8-
RINTSTS)+ADs-
> +AD4- +-                      /+ACo- Error during data transfer. +ACo-/
> +AD4-                         if (mask +ACY- (DWMCI+AF8-DATA+AF8-ERR +AHw-
> DWMCI+AF8-DATA+AF8-TOUT)) +AHs- +AD4-                                 
printf(+ACIAJQ-s: DATA
> ERROR+ACEAXA-n+ACI-, +AF8AXw-func+AF8AXw-)+ADs- +AD4- 
>                               bounce+AF8-buffer+AF8-stop(+ACY-bbstate)+ADs-
> +AD4-                                 return -1+ADs-
> +AD4-                         +AH0-
> +AD4- -               +AH0- while (+ACE-(mask +ACY- DWMCI+AF8-INTMSK+AF8-
DTO))+ADs-
> +AD4- +-
> +AD4- +-                      /+ACo- Data arrived correctly. +ACo-/
> +AD4- +-                      if (mask +ACY- DWMCI+AF8-INTMSK+AF8-DTO)
> +AD4- +-                              break+ADs-
> +AD4- +-
> +AD4- +-                      /+ACo- Check for timeout. +ACo-/
> +AD4- +-                      if (get+AF8-timer(start) +AD4- timeout) +AHs-
> +AD4- +-                              printf(+ACIAJQ-s: Timeout waiting for 
data+ACEAXA-n+ACI-,
> +AD4- +-                                     +AF8AXw-func+AF8AXw-)+ADs-
> +AD4- +-                              bounce+AF8-buffer+AF8-stop(+ACY-
bbstate)+ADs-
> +AD4- +-                              return TIMEOUT+ADs-
> +AD4- +-                      +AH0-
> +AD4- +-              +AH0-
> +AD4-
> +AD4-                 dwmci+AF8-writel(host, DWMCI+AF8-RINTSTS, mask)+ADs-
> +AD4-

btw Is your mailer totally broken by any chance ?

> It turned out that patch breaks functionality in some cases.
> For me on every attempt to download something significant (at least I see
> it on 5/7 Mb files) from SD I'm seeing timeout firing too early.
> 
> I added a bit of extra instrumentation to see where time is spent and why.

Check this patch:

[PATCH 1/2] mmc: dw_mmc: Increase timeout to 20 seconds

https://patchwork.ozlabs.org/patch/511899/

Does it fix things for you ?

[...]
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to