2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-21 11:44:01 +08:00
linux-next/arch/ia64
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
..
configs [PATCH] e1000: Added disable packet split capability 2006-01-18 16:17:57 -05:00
dig [PATCH] drive_info removal outside of arch/i386 2006-02-07 20:56:47 -05:00
hp [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
ia32 [IA64] sys32_signal() forgets to initialize ->sa_mask 2006-02-09 14:41:41 -08:00
kernel [IA64] ia64: simplify and fix udelay() 2006-02-15 13:37:04 -08:00
lib Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2005-10-28 21:09:26 -07:00
mm [IA64] Simple memory hot-add for ia64. 2006-01-16 12:06:55 -08:00
oprofile [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
pci [ACPI] merge 3549 4320 4485 4588 4980 5483 5651 acpica asus fops pnpacpi branches into release 2006-01-24 17:52:48 -05:00
scripts Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sn [IA64] ia64: simplify and fix udelay() 2006-02-15 13:37:04 -08:00
defconfig [PATCH] e1000: Added disable packet split capability 2006-01-18 16:17:57 -05:00
install.sh Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig Pull sgi-drivers-makefile-cleanup into release branch 2006-02-02 13:30:59 -08:00
Kconfig.debug [PATCH] Move Kprobes and Oprofile to "Instrumentation Support" menu 2005-11-07 07:53:35 -08:00
Makefile [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
module.lds Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00