]> git.baikalelectronics.ru Git - kernel.git/commit
[IA64] disable preemption in udelay()
authorJohn Hawkes <hawkes@sgi.com>
Fri, 16 Dec 2005 18:00:24 +0000 (10:00 -0800)
committerTony Luck <tony.luck@intel.com>
Fri, 16 Dec 2005 18:00:24 +0000 (10:00 -0800)
commit2dbd1275de8452dc14cbac7f6d82e89d5dfedfd6
tree4cbc38474b5ab6dfe8591f0b490686315a6aaa26
parentf8eab26e5d49912291eb9ff0636879097d60759a
[IA64] disable preemption in udelay()

The udelay() inline for ia64 uses the ITC.  If CONFIG_PREEMPT is enabled
and the platform has unsynchronized ITCs and the calling task migrates
to another CPU while doing the udelay loop, then the effective delay may
be too short or very, very long.

This patch disables preemption around 100 usec chunks of the overall
desired udelay time.  This minimizes preemption-holdoffs.

udelay() is now too big to be inline, move it out of line and export it.

Signed-off-by: John Hawkes <hawkes@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/kernel/time.c
include/asm-ia64/delay.h