[U-Boot] [PATCH] mmc: sdhci: Avoid commands errors by simple timeout adaptation.

Pantelis Antoniou panto at antoniou-consulting.com
Wed Oct 2 11:40:35 CEST 2013


Hi Przemyslaw,

On Oct 1, 2013, at 7:59 PM, Przemyslaw Marczak wrote:

> Hello Pantelis, 
> Thank you for reply 
> 
> 
> On 10/01/2013 05:50 PM, Pantelis Antoniou wrote: 
>>     while (sdhci_readl(host, SDHCI_PRESENT_STATE) & mask) { 
>> -        if (timeout == 0) { 
>> +        if (time == cmd_timeout) { 
>> time >= cmd_timeout here. 
>> 
>> You rely on the timeout hitting exactly the same value which is not guaranteed. 
> I think this condition is guaranteed here, because of "time" value that is incremented only inside the loop. 
> Also if meets (time == cmd_timeout) condition and next if timeout will be increased twice, then eg. if current timeout 
> is 100ms -> next will be 200 ms, so it needs 100 loops and no more. 
> 
> Am I wrong? 
> 

OK, let's take things one at a time:

First of all you use the global variable cmd_timeout, and you alter it's value. Where it is reset back
in case the operation starts all over again?

Secondly the check time == cmd_timeout is very very fragile. You depend on the loop only incrementing
the time by one. 

This is not always guaranteed to be the case in the future.

Using a greater than comparison you are safe even if in sometime in the future the step changes and
there is absolutely no performance penalty.

> Regards 
> 
> -- 
> Przemyslaw Marczak 
> Samsung R&D Institute Poland 
> Samsung Electronics 
> p.marczak at samsung.com 
> 

Regards

-- Pantelis



More information about the U-Boot mailing list