[POWERPC] Fix mdelay badness on shared processor partitions
authorAnton Blanchard <anton@samba.org>
Thu, 15 Jun 2006 04:11:22 +0000 (14:11 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 21 Jun 2006 05:01:33 +0000 (15:01 +1000)
commit1e92a550e80fef01ebcc0bcd0896109cdb986c72
tree6cdb7bc6c6ad51644f9b899b2604d26fe7cd540b
parentddf5f75a16b3e7460ffee881795aa168dffcd0cf
[POWERPC] Fix mdelay badness on shared processor partitions

On partitioned PPC64 systems where a partition is given 1/10 of a
processor, we have seen mdelay() delaying for 10 times longer than it
should.  The reason is that the generic mdelay(n) does n delays of 1
millisecond each.  However, with 1/10 of a processor, we only get a
one-millisecond timeslice every 10ms.  Thus each 1 millisecond delay
loop ends up taking 10ms elapsed time.

The solution is just to use the PPC64 udelay function, which uses the
timebase to ensure that the delay is based on elapsed time rather than
how much processing time the partition has been given.  (Yes, the
generic mdelay uses the PPC64 udelay, but the problem is that the
start time gets reset every millisecond, and each time it gets reset
we lose another 9ms.)

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Acked-by: Andrew Morton <akpm@osdl.org>
include/asm-powerpc/delay.h
include/linux/delay.h