On Tuesday 04 February 2014 08:36:36 Joe Perches wrote:
On Tue, 2014-02-04 at 08:03 +0100, Holger Schurig wrote:
quoted
Joe, look in linux/arch/arm/include/asm/delay.h. The macro udelay
cannot handle large values because of lost-of-precision.
IMHO udelay on ARM is broken, because it also cannot work with fast
ARM processors (where bogomips >= 3355, which is in sight now). It's
just not broken enought that someone did something against it ... so
the current kludge is good enought.
Maybe something like this would be better?
I actually like the fact that we get link errors for insane 'udelay'
times. In most cases it's a driver bug because we shouldn't keep
the CPU busy for an eternity in the kernel (and call msleep() instead).
For the rare cases where mdelay makes sense, we also want to add
a comment to the code explaining why msleep cannot be used.
Arnd