linux/arch
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
..
alpha [PATCH] alpha: set cpu_possible_map much earlier 2006-02-08 07:57:37 -08:00
arm [ARM] 3326/1: H1940 - Control latches 2006-02-10 22:40:51 +00:00
arm26 [PATCH] arm26: select BLK_DEV_FD only on A5K 2006-02-01 08:53:22 -08:00
cris [PATCH] fallout from ptrace consolidation patch: cris/arch-v10 2006-02-07 20:57:19 -05:00
frv [PATCH] FRV: Use virtual interrupt disablement 2006-02-14 16:09:35 -08:00
h8300 [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
i386 [PATCH] x86: gitignore some autogenerated files for i386 2006-02-14 16:09:35 -08:00
ia64 [IA64] ia64: simplify and fix udelay() 2006-02-15 13:37:04 -08:00
m32r [PATCH] drive_info removal outside of arch/i386 2006-02-07 20:56:47 -05:00
m68k [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
m68knommu [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
mips [MIPS] Fix typo in _sys32_rt_sigreturn and _sysn32_rt_sigreturn. 2006-02-14 19:13:26 +00:00
parisc [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge 2006-02-10 14:52:31 -08:00
ppc ppc: Use the system call table from arch/powerpc/kernel/systbl.S 2006-02-10 16:02:20 +11:00
s390 [PATCH] s390: fix __delay implementation 2006-02-14 16:09:35 -08:00
sh [PATCH] sh: lvalues abuse in arch/sh/boards/renesas/rts7751r2d/io.c 2006-02-08 01:06:09 -05:00
sh64 [PATCH] drive_info removal outside of arch/i386 2006-02-07 20:56:47 -05:00
sparc [SPARC]: sys_newfstatat --> sys_fstatat64 2006-02-12 23:30:11 -08:00
sparc64 [SPARC]: sys_newfstatat --> sys_fstatat64 2006-02-12 23:30:11 -08:00
um [PATCH] uml: remove a dead file 2006-02-07 16:12:32 -08:00
v850 [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
x86_64 [PATCH] x86_64: GART DMA merging fix 2006-02-12 16:10:47 -08:00
xtensa [PATCH] Fix some ucLinux breakage from the tty updates 2006-02-03 08:32:04 -08:00