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