linux/arch/ia64/sn/kernel
hawkes@sgi.com defbb2c929 [IA64] ia64: simplify and fix udelay()
The original ia64 udelay() was simple, but flawed for platforms without
synchronized ITCs:  a preemption and migration to another CPU during the
while-loop likely resulted in too-early termination or very, very
lengthy looping.

The first fix (now in 2.6.15) broke the delay loop into smaller,
non-preemptible chunks, reenabling preemption between the chunks.  This
fix is flawed in that the total udelay is computed to be the sum of just
the non-premptible while-loop pieces, i.e., not counting the time spent
in the interim preemptible periods.  If an interrupt or a migration
occurs during one of these interim periods, then that time is invisible
and only serves to lengthen the effective udelay().

This new fix backs out the current flawed fix and returns to a simple
udelay(), fully preemptible and interruptible.  It implements two simple
alternative udelay() routines:  one a default generic version that uses
ia64_get_itc(), and the other an sn-specific version that uses that
platform's RTC.

Signed-off-by: John Hawkes <hawkes@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2006-02-15 13:37:04 -08:00
..
sn2 [IA64] ia64: simplify and fix udelay() 2006-02-15 13:37:04 -08:00
Makefile [IA64-SGI] Recursive flags do not work for selective builds 2006-01-26 13:17:34 -08:00
bte.c [IA64-SGI] Shub2 BTE address fix 2006-02-06 09:28:10 -08:00
bte_error.c [IA64-SGI] Altix BTE error handling fixes 2006-01-13 14:06:53 -08:00
huberror.c [IA64-SGI] Altix BTE error handling fixes 2006-01-13 14:06:53 -08:00
idle.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_init.c [IA64-SGI] export sn_pcidev_info_get 2006-02-15 13:28:48 -08:00
iomv.c [IA64-SGI] altix: enable vgacon support 2005-06-28 09:23:04 -07:00
irq.c [IA64-SGI] Hotplug driver related fix in the SN ia64 code. 2006-02-09 14:12:24 -08:00
klconflib.c [IA64-SGI] sn2 housekeeping 2006-02-02 13:35:59 -08:00
machvec.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mca.c [IA64] prevent sn2 specific code to be run in generic kernels 2006-02-08 11:57:16 -08:00
setup.c [IA64-SGI] fix the size of __sn_cnodeid_to_nasid 2006-02-15 13:33:48 -08:00
tiocx.c [IA64-SGI] sn2 minor fixes and cleanups 2006-02-15 13:24:45 -08:00
xp_main.c [IA64-SGI] sn2 mutex conversion 2006-01-17 13:53:24 -08:00
xp_nofault.S [IA64-SGI] SGI Altix cross partition functionality (2nd 2005-05-03 12:16:52 -07:00
xpc_channel.c [IA64-SGI] enforce proper ordering of callouts by XPC 2006-02-15 13:35:03 -08:00
xpc_main.c [IA64-SGI] enforce proper ordering of callouts by XPC 2006-02-15 13:35:03 -08:00
xpc_partition.c [IA64-SGI] move xpc.h to include/asm-ia64/sn (cleanup) 2006-01-13 10:40:23 -08:00
xpnet.c [PATCH] more SPIN_LOCK_UNLOCKED -> DEFINE_SPINLOCK conversions 2005-09-09 14:03:48 -07:00