android_kernel_xiaomi_sm8350/arch/ia64/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
..
cpufreq [ACPI] IA64 ZX1 buildfix for _PDC patch 2005-12-05 17:24:45 -05:00
acpi-ext.c [ACPI] ACPICA 20050930 2005-12-10 00:20:25 -05:00
acpi-processor.c [ACPI] IA64 ZX1 buildfix for _PDC patch 2005-12-05 17:24:45 -05:00
acpi.c [ACPI] acpi_register_gsi() fix needed for ACPICA 20051021 2005-12-28 02:50:44 -05:00
asm-offsets.c [IA64] fix circular dependency on generation of asm-offsets.h 2005-09-13 08:50:39 -07:00
brl_emu.c
cyclone.c [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
efi_stub.S
efi.c [IA64] Fix wrong use of memparse in efi.c 2006-02-07 14:13:09 -08:00
entry.h
entry.S [IA64] unshare system call registration for ia64 2006-02-08 15:43:38 -08:00
fsys.S [IA64] add syscall entry for *at() 2006-02-06 10:42:46 -08:00
gate-data.S
gate.lds.S
gate.S kbuild: ia64 use generic asm-offsets.h support 2005-09-09 22:03:13 +02:00
head.S [IA64] Fix CONFIG_PRINTK_TIME 2006-02-07 15:25:57 -08:00
ia64_ksyms.c [IA64] Remove duplicate EXPORT_SYMBOLs 2006-02-15 13:23:32 -08:00
init_task.c
iosapic.c [IA64] Manual merge fix for 3 files 2005-09-08 14:27:13 -07:00
irq_ia64.c
irq_lsapic.c
irq.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
ivt.S [IA64] polish comments for tlb fault handler in ivt.S 2005-11-17 09:48:15 -08:00
jprobes.S [IA64] prevent accidental modification of args in jprobe handler 2006-01-13 14:45:21 -08:00
kprobes.c [IA64] prevent accidental modification of args in jprobe handler 2006-01-13 14:45:21 -08:00
machvec.c
Makefile [ACPI] IA64 ZX1 buildfix for _PDC patch 2005-12-05 17:24:45 -05:00
mca_asm.S [IA64] Set the correct default OS status in the MCA handler 2006-01-24 11:50:07 -08:00
mca_drv_asm.S [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
mca_drv.c [IA64] mca_drv: Add minstate validation 2006-02-09 14:42:55 -08:00
mca_drv.h [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
mca.c [PATCH] ia64: task_thread_info() 2006-01-12 09:08:58 -08:00
minstate.h [IA64] MCA/INIT: remove the physical mode path from minstate.h 2005-09-11 14:09:12 -07:00
module.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
numa.c
pal.S
palinfo.c
patch.c [IA64] Fix 2.6 kernel for the new ia64 assembler 2005-10-25 15:05:45 -07:00
perfmon_default_smpl.c
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon_montecito.h [IA64] Perfmon for Montecito 2006-01-16 10:31:44 -08:00
perfmon.c [IA64] sem2mutex: arch/ia64/kernel/perfmon.c 2006-01-19 11:17:56 -08:00
process.c [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
ptrace.c [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
sal.c [IA64] avoid broken SAL_CACHE_FLUSH implementations 2006-02-02 13:25:54 -08:00
salinfo.c [IA64] Add hotplug cpu to salinfo.c, replace semaphore with mutex 2006-01-13 14:22:35 -08:00
semaphore.c
setup.c [IA64] Fix CONFIG_PRINTK_TIME 2006-02-07 15:25:57 -08:00
sigframe.h
signal.c [PATCH] ia64: task_thread_info() 2006-01-12 09:08:58 -08:00
smp.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
smpboot.c [PATCH] sched: disable preempt in idle tasks 2005-11-09 07:56:33 -08:00
sys_ia64.c [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
time.c [IA64] ia64: simplify and fix udelay() 2006-02-15 13:37:04 -08:00
topology.c [PATCH] Export cpu topology in sysfs 2006-02-03 08:32:09 -08:00
traps.c [IA64] Handle debug traps in fsys mode 2006-01-13 14:16:08 -08:00
unaligned.c [IA64] Scaling fix for simultaneous unaligned accesses 2006-01-24 14:39:50 -08:00
uncached.c [IA64] eliminate softlockup warning 2006-01-19 11:18:25 -08:00
unwind_decoder.c
unwind_i.h
unwind.c [IA64] MCA/INIT: remove obsolete unwind code 2005-09-11 14:09:34 -07:00
vmlinux.lds.S [IA64] Add __read_mostly support for IA64 2005-12-16 10:52:46 -08:00