[PATCH] mtd: nand: docg4: add udelay(1) to polling loop

Mike Dunn mikedunn at newsguy.com
Thu May 16 15:49:55 EDT 2013


On 05/16/2013 12:43 AM, Artem Bityutskiy wrote:
> On Mon, 2013-04-22 at 11:23 -0700, Mike Dunn wrote:
>>  	timeo = 1000;
>>  	do {
>> +		udelay(1);
>>  		cpu_relax();
>>  		flash_status = readb(docptr + DOC_FLASHCONTROL);
>>  	} while (!(flash_status & DOC_CTRL_FLASHREADY) && --timeo);
> 
> How about using jiffies instead? Something like:
> 
> timeout = jiffies + msecs_to_jiffies(delay);
> do {
> } while (time_before(jiffies, timeout))
> 


This works too (just tested it).  But the reason I did not do this originally is
because the timeout is very short.  With udelay(1) and timeo=1000, the timeout
is 1ms (plus processing time), and I think this is well in excess of the actual
time needed by the hardware.  Using jiffies and with HZ=100, my minimum timeout
is 10ms.  But there's no harm in having an excessive timeout since it's a
busy-wait loop, so your suggestion is probably fine.

Is use of udelay() frowned upon?  Will using jiffies cause a problem with a
"tickless" configuration?  Hoping to learn something...

Thanks Artem!
Mike



More information about the linux-mtd mailing list