kernel_optimize_test/arch/ia64/kernel
Hidetoshi Seto 829a999625 [IA64] ar.itc access must really be after xtime_lock.sequence has been read
The ".acq" semantics of the load only apply w.r.t. other data access.
Reading the clock (ar.itc) isn't a data access so strange things can
happen here.  Specifically the read of ar.itc can be launched as soon
as the read of xtime_lock.sequence is ISSUED.  Since this may cache
miss, and that might cause a thread switch, and there may be cache
contention for the line containing xtime_lock, it may be a long time
before the actual value is returned, so the ar.itc value may be very
stale.

Move the consumption of r28 up before the read of ar.itc to make sure
that we really have got the current value of xtime_lock.sequence
before look at ar.itc.

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2007-07-13 16:21:44 -07:00
..
cpufreq
acpi-ext.c
acpi-processor.c [IA64] Fix using uninitialized data in _PDC setup 2007-05-24 10:14:30 -07:00
acpi.c [IA64] acpi_get_sysname() should be __init 2007-05-24 10:59:44 -07:00
asm-offsets.c
audit.c [PATCH] audit signal recipients 2007-05-11 05:38:25 -04:00
brl_emu.c
crash_dump.c
crash.c [IA64] kdump on INIT needs multi-nodes sync-up (v.2) 2007-05-14 15:55:39 -07:00
cyclone.c
efi_stub.S
efi.c
entry.h
entry.S [IA64] wire up {signal,timer,event}fd syscalls 2007-05-14 15:55:11 -07:00
err_inject.c [IA64] typo s/kenrel/kernel/ 2007-05-10 09:35:30 -07:00
esi_stub.S
esi.c
fsys.S [IA64] ar.itc access must really be after xtime_lock.sequence has been read 2007-07-13 16:21:44 -07:00
gate-data.S
gate.lds.S
gate.S [IA64] Stop bit for brl instruction 2007-07-09 13:37:44 -07:00
head.S
ia64_ksyms.c
init_task.c
iosapic.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-05-09 13:38:45 -07:00
irq_ia64.c [IA64] sa_interrupt is deprecated 2007-05-09 14:20:59 -07:00
irq_lsapic.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
irq.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
ivt.S
jprobes.S
kprobes.c [IA64] optimize pagefaults a little 2007-05-16 09:00:51 -07:00
machine_kexec.c
machvec.c [IA64] Fix - Section mismatch: reference to .init.data:mvec_name 2007-05-10 11:57:58 -07:00
Makefile
mca_asm.S [IA64] Support multiple CPUs going through OS_MCA 2007-07-11 11:50:11 -07:00
mca_drv_asm.S [IA64] Don't set psr.ic and psr.i simultaneously 2007-07-09 10:30:28 -07:00
mca_drv.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
mca_drv.h
mca.c [IA64] Support multiple CPUs going through OS_MCA 2007-07-11 11:50:11 -07:00
minstate.h
module.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
msi_ia64.c
numa.c
pal.S
palinfo.c
patch.c
perfmon_default_smpl.c
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
perfmon_montecito.h
perfmon.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
process.c [IA64] silence GCC ia64 unused variable warnings 2007-07-11 11:40:42 -07:00
ptrace.c
relocate_kernel.S
sal.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
salinfo.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
semaphore.c
setup.c sched: zap the migration init / cache-hot balancing code 2007-07-09 18:51:57 +02:00
sigframe.h
signal.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-05-09 13:38:45 -07:00
smp.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
smpboot.c [IA64] start_secondary() and smp_callin() should be __cpuinit 2007-05-23 16:46:40 -07:00
sys_ia64.c
time.c [IA64] remove duplicate header include line 2007-06-26 13:33:45 -07:00
topology.c
traps.c [IA64] spelling fixes: arch/ia64/ 2007-05-11 14:55:43 -07:00
unaligned.c
uncached.c
unwind_decoder.c
unwind_i.h
unwind.c [IA64] Correct unwind validation code 2007-06-26 13:33:10 -07:00
vmlinux.lds.S all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00