linux/include/asm-x86_64
Eric W. Biederman 3d483f4757 [PATCH] Fix sync_tsc hang
sync_tsc was using smp_call_function to ask the boot processor to report
it's tsc value.  smp_call_function performs an IPI_send_allbutself which is
a broadcast ipi.  There is a window during processor startup during which
the target cpu has started and before it has initialized it's interrupt
vectors so it can properly process an interrupt.  Receveing an interrupt
during that window will triple fault the cpu and do other nasty things.

Why cli does not protect us from that is beyond me.

The simple fix is to match ia64 and provide a smp_call_function_single.
Which avoids the broadcast and is more efficient.

This certainly fixes the problem of getting stuck on boot which was
very easy to trigger on my SMP Hyperthreaded Xeon, and I think
it fixes it for the right reasons.

Minor changes by AK

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-29 15:01:13 -07:00
..
8253pit.h
a.out.h
acpi.h [ACPI] enable C2 and C3 idle power states on SMP 2005-07-12 00:14:36 -04:00
agp.h
apic.h
apicdef.h
atomic.h
bitops.h [PATCH] x86_64: Fix gcc 4 warning in sched_find_first_bit 2005-07-28 21:46:02 -07:00
boot.h
bootsetup.h
bug.h [PATCH] x86_64: Turn BUG data into valid instruction 2005-07-28 21:46:01 -07:00
bugs.h
byteorder.h
cache.h
cacheflush.h
calling.h
checksum.h
compat.h
cpu.h
cpufeature.h
cputime.h
current.h
debugreg.h
delay.h
desc.h [PATCH] x86_64: Some cleanup in setup64.c 2005-07-28 21:45:58 -07:00
div64.h
dma-mapping.h
dma.h
dwarf2.h
e820.h
elf.h
emergency-restart.h [PATCH] x86_64: Implemenent machine_emergency_restart 2005-07-26 14:35:42 -07:00
errno.h
fcntl.h
fixmap.h
floppy.h
fpu32.h
genapic.h
hardirq.h
hdreg.h
hpet.h
hw_irq.h
i387.h
ia32.h
ia32_unistd.h [PATCH] inotify: add x86-64 syscall entries 2005-07-26 13:37:22 -07:00
ide.h
io.h
io_apic.h [PATCH] x86: i8253/i8259A lock cleanup 2005-06-30 08:45:10 -07:00
ioctl.h
ioctls.h
ipcbuf.h
ipi.h [PATCH] x86_64: Use for_each_cpu_mask for clustered IPI flush 2005-07-28 21:45:57 -07:00
irq.h [PATCH] x86_64: Switch to the interrupt stack when running a softirq in local_bh_enable() 2005-07-28 21:46:02 -07:00
kdebug.h
kexec.h
kmap_types.h
kprobes.h
ldt.h
linkage.h
local.h
mach_apic.h
mc146818rtc.h
mce.h
mman.h
mmsegment.h
mmu.h
mmu_context.h
mmx.h
mmzone.h
module.h
mpspec.h
msgbuf.h
msi.h
msr.h [PATCH] x86_64: Fix incorrectly defined MSR_K8_SYSCFG 2005-07-28 21:46:00 -07:00
mtrr.h
namei.h
nmi.h
node.h
numa.h
numnodes.h
page.h
param.h
parport.h
pci-direct.h
pci.h [ACPI] merge acpi-2.6.12 branch into latest Linux 2.6.13-rc... 2005-07-12 17:21:56 -04:00
pda.h
percpu.h
pgalloc.h
pgtable.h [PATCH] x86_64 machine_kexec: Use standard pagetable helpers 2005-07-29 13:12:49 -07:00
poll.h
posix_types.h
prctl.h
processor.h
proto.h [PATCH] MTRR suspend/resume cleanup 2005-07-07 18:23:42 -07:00
ptrace.h
resource.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
sections.h
segment.h
semaphore.h
sembuf.h
serial.h [PATCH] Serial: Split 8250 port table (part 2) 2005-06-29 18:45:19 +01:00
setup.h
shmbuf.h
shmparam.h
sigcontext.h
sigcontext32.h
siginfo.h
signal.h
smp.h [PATCH] Fix sync_tsc hang 2005-07-29 15:01:13 -07:00
socket.h
sockios.h
sparsemem.h
spinlock.h
stat.h
statfs.h
string.h
suspend.h
swiotlb.h
system.h [PATCH] x86_64: Fix some typos in system.h comments 2005-07-28 21:46:00 -07:00
termbits.h
termios.h
thread_info.h
timex.h
tlb.h
tlbflush.h [PATCH] x86_64: Fix some comments in tlbflush.h 2005-07-28 21:45:59 -07:00
topology.h
types.h
uaccess.h
ucontext.h
unaligned.h
unistd.h [PATCH] inotify: add x86-64 syscall entries 2005-07-26 13:37:22 -07:00
user.h
user32.h
vga.h
vsyscall.h
vsyscall32.h
xor.h