linux/include/asm-x86_64
Fernando Luis Vazquez Cao dd988528f4 Use the APIC to determine the hardware processor id - x86_64
hard_smp_processor_id used to be just a macro that hard-coded
hard_smp_processor_id to 0 in the non SMP case.  When booting non SMP kernels
on hardware where the boot ioapic id is not 0 this turns out to be a problem.
This is happens frequently in the case of kdump and once in a great while in
the case of real hardware.

Use the APIC to determine the hardware processor id in both UP and SMP kernels
to fix this issue.

Notice that hard_smp_processor_id is only used by SMP code or by code that
works with apics so we do not need to handle the case when apics are not
present and hard_smp_processor_id should never be called there.

Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
Cc: "Luck, Tony" <tony.luck@intel.com>
Acked-by: Andi Kleen <ak@suse.de>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-09 12:30:48 -07:00
..
8253pit.h
a.out.h
acpi.h ACPICA: Allow ACPI id to be u32 instead of u8. 2007-02-02 21:14:31 -05:00
agp.h [AGPGART] Move [un]map_page_into_agp into asm/agp.h 2007-04-26 14:22:50 -04:00
alternative-asm.i Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
alternative.h [PATCH] x86: PARAVIRT: Jeremy Fitzhardinge <jeremy@goop.org> 2007-05-02 19:27:16 +02:00
apic.h [PATCH] x86-64: safe_apic_wait_icr_idle - x86_64 2007-05-02 19:27:17 +02:00
apicdef.h x86_64: Remove stale lapic definition from apicdef.h 2006-04-01 22:50:03 -05:00
atomic.h x86: create asm/cmpxchg.h 2007-05-08 11:15:20 -07:00
auxvec.h
bitops.h [PATCH] x86-64: Fix wrong gcc check in bitops.h 2007-02-13 13:26:25 +01:00
boot.h
bootsetup.h [PATCH] Dynamic kernel command-line: x86_64 2007-02-12 09:48:39 -08:00
bug.h [PATCH] Generic BUG for x86-64 2006-12-08 08:28:39 -08:00
bugs.h [PATCH] x86-64: Clean up asm-x86_64/bugs.h 2007-05-02 19:27:12 +02:00
byteorder.h
cache.h fix file specification in comments 2006-10-03 23:01:26 +02:00
cacheflush.h [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
calgary.h [PATCH] Calgary: allow compiling Calgary in but not using it by default 2006-12-07 02:14:07 +01:00
calling.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
checksum.h [NET]: X86_64 checksum annotations and cleanups. 2006-12-02 21:23:14 -08:00
cmpxchg.h x86: create asm/cmpxchg.h 2007-05-08 11:15:20 -07:00
compat.h [PATCH] amd64: task_pt_regs() 2006-01-12 09:08:51 -08:00
cpu.h
cpufeature.h [PATCH] x86-64: x86-64 add Intel BTS cpufeature bit and detection (take 2) 2006-12-07 02:14:11 +01:00
cputime.h
current.h kbuild: alpha,x86_64 use generic asm-offsets.h support 2005-09-09 21:28:48 +02:00
debugreg.h
delay.h [PATCH] x86: comment magic constants in delay.h 2006-12-07 02:14:07 +01:00
desc_defs.h [PATCH] x86-64: Extract segment descriptor definitions for use outside 2006-12-07 02:14:04 +01:00
desc.h [PATCH] x86-64: Introduce load_TLS to the "for" loop. 2007-05-02 19:27:09 +02:00
device.h ACPI: Change ACPI to use dev_archdata instead of firmware_data 2006-12-01 14:52:01 -08:00
div64.h
dma-mapping.h [PATCH] x86-64: dma_ops as const 2007-05-02 19:27:06 +02:00
dma.h [PATCH] x86_64: Remove long obsolete CVS 2006-06-26 10:48:16 -07:00
dmi.h [PATCH] x86_64: Implement early DMI scanning 2006-03-25 09:10:55 -08:00
dwarf2.h [PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder 2006-09-26 10:52:41 +02:00
e820.h [PATCH] x86-64: Fix fake numa for x86_64 machines with big IO hole 2007-02-13 13:26:22 +01:00
edac.h [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
elf.h [PATCH] severing module.h->sched.h 2006-12-04 02:00:22 -05:00
emergency-restart.h
errno.h
fcntl.h [PATCH] Clean up struct flock definitions 2005-09-07 16:57:38 -07:00
fixmap.h [PATCH] x86-64: adjust inclusion of asm/vsyscall32.h 2007-05-02 19:27:04 +02:00
floppy.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
fpu32.h
futex.h [PATCH] mm: pagefault_{disable,enable}() 2006-12-07 08:39:21 -08:00
genapic.h [PATCH] x86-64: always use physical delivery mode on > 8 CPUs 2007-05-02 19:27:04 +02:00
hardirq.h [PATCH] genirq: irq: generalize the check for HARDIRQ_BITS 2006-10-04 07:55:28 -07:00
hpet.h [PATCH] time: x86_64: split x86_64/kernel/time.c up 2007-02-16 08:14:00 -08:00
hw_irq.h [PATCH] x86_64 irq: Fix comments after changing IRQ0_VECTOR from 0x20 to 0x30 2007-03-29 08:16:23 -07:00
hypertransport.h [PATCH] Initial generic hypertransport interrupt support 2006-10-04 07:55:29 -07:00
i387.h [PATCH] Add __must_check to copy_*_user 2006-09-26 10:52:39 +02:00
ia32_unistd.h [PATCH] x86_64: Remove most of ia32_unistd.h 2006-06-26 10:48:15 -07:00
ia32.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
ide.h
idle.h [PATCH] x86_64: Add idle notifiers 2006-01-11 19:04:55 -08:00
intel_arch_perfmon.h [PATCH] x86: i386/x86-64 Add nmi watchdog support for new Intel CPUs 2006-09-26 10:52:27 +02:00
io_apic.h [PATCH] io_apic.h needs apicdef.h 2007-03-05 07:57:50 -08:00
io.h [PATCH] x86-64: Fix preprocessor condition 2007-02-13 13:26:23 +01:00
ioctl.h [PATCH] Generic ioctl.h 2006-01-10 08:01:34 -08:00
ioctls.h [PATCH] termios: Enable new style termios ioctls on x86-64 2006-12-08 08:28:57 -08:00
ipcbuf.h
ipi.h [PATCH] x86-64: Use safe_apic_wait_icr_idle in __send_IPI_dest_field - x86_64 2007-05-02 19:27:18 +02:00
irq_regs.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
irq.h [PATCH] genirq: x86_64 irq: make vector_irq per cpu 2006-10-04 07:55:29 -07:00
irqflags.h [PATCH] x86-64: Use X86_EFLAGS_IF in x86-64/irqflags.h. 2007-05-02 19:27:11 +02:00
k8.h [PATCH] x86_64: Clean and enhance up K8 northbridge access code 2006-06-26 10:48:15 -07:00
Kbuild consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
kdebug.h move die notifier handling to common code 2007-05-08 11:15:04 -07:00
kexec.h kdump/kexec: calculate note size at compile time 2007-05-08 11:15:07 -07:00
kmap_types.h
kprobes.h [PATCH] IA64: kprobe invalidate icache of jump buffer 2006-07-31 13:28:38 -07:00
ldt.h
linkage.h [PATCH] Add proper alignment to ENTRY 2006-09-26 10:52:29 +02:00
local.h local_t: x86_64 extension 2007-05-08 11:15:20 -07:00
mach_apic.h [PATCH] x86_64 irq: Allocate a vector across all cpus for genapic_flat. 2006-10-08 12:24:02 -07:00
mc146818rtc.h
mce.h [PATCH] x86-64: Allow to run a program when a machine check event is detected 2007-02-13 13:26:23 +01:00
mman.h [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
mmsegment.h
mmu_context.h [PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction 2007-05-02 19:27:14 +02:00
mmu.h
mmzone.h [PATCH] x86-64: configurable fake numa node sizes 2007-05-02 19:27:09 +02:00
module.h
mpspec.h [PATCH] Replace mp bus array with bitmap for bus not pci 2006-09-26 10:52:30 +02:00
msgbuf.h
msidef.h [PATCH] genirq: x86_64 irq: Move msi message composition into io_apic.c 2006-10-04 07:55:28 -07:00
msr-index.h [PATCH] x86: Clean up x86 control register and MSR macros (corrected) 2007-05-02 19:27:12 +02:00
msr.h i386: Add safe variants of rdmsr_on_cpu and wrmsr_on_cpu 2007-05-08 17:22:01 +02:00
mtrr.h [PATCH] x86: Save the MTRRs of the BSP before booting an AP 2007-05-02 19:27:17 +02:00
mutex.h [PATCH] x86-64: Remove fastcall references in x86_64 code 2007-02-13 13:26:22 +01:00
namei.h
nmi.h [PATCH] x86-64: Use the 32bit wd_ops for 64bit too. 2007-05-02 19:27:20 +02:00
node.h
numa.h [PATCH] Unify pxm_to_node() and node_to_pxm() 2006-06-23 07:42:48 -07:00
page.h x86_64: kill 19000+ sparse warnings 2007-05-08 11:15:14 -07:00
param.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
parport.h
pci-direct.h [PATCH] x86: add write_pci_config_byte() to direct PCI access routines 2006-12-07 02:14:10 +01:00
pci.h [PATCH] x86_64: Calgary IOMMU - Calgary specific bits 2006-06-26 10:48:19 -07:00
pda.h [PATCH] x86-64: Fix race in exit_idle 2006-11-14 16:57:46 +01:00
percpu.h [PATCH] x86-64: Account for module percpu space separately from kernel percpu 2007-05-02 19:27:11 +02:00
pgalloc.h [PATCH] x86-64: use lru instead of page->index and page->private for pgd lists management. 2007-05-02 19:27:10 +02:00
pgtable.h x86_64: kill 19000+ sparse warnings 2007-05-08 11:15:14 -07:00
poll.h [PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications 2006-03-25 08:22:56 -08:00
posix_types.h
prctl.h
processor-flags.h [PATCH] x86: Clean up x86 control register and MSR macros (corrected) 2007-05-02 19:27:12 +02:00
processor.h [PATCH] x86: Clean up x86 control register and MSR macros (corrected) 2007-05-02 19:27:12 +02:00
proto.h [PATCH] x86-64: Move mtrr prototypes from proto.h to mtrr.h 2007-05-02 19:27:17 +02:00
ptrace-abi.h [PATCH] Split i386 and x86_64 ptrace.h 2006-09-26 08:49:10 -07:00
ptrace.h [PATCH] Add regs_return_value() helper 2006-10-02 07:57:16 -07:00
resource.h
rio.h [PATCH] Calgary: check BBAR ioremap success when ioremapping 2006-12-07 02:14:06 +01:00
rtc.h
rwlock.h [PATCH] Clean up spin/rwlocks 2006-09-26 10:52:32 +02:00
scatterlist.h PCI: scatterlist.h needs types.h 2007-05-02 19:02:34 -07:00
seccomp.h
sections.h
segment.h [PATCH] x86-64: cleanup segments 2007-05-02 19:27:07 +02:00
semaphore.h [PATCH] Use early clobber in semaphores 2006-09-30 01:47:55 +02:00
sembuf.h
serial.h x86, serial: convert legacy COM ports to platform devices 2007-05-08 11:15:23 -07:00
setup.h [PATCH] x86_64: 2048-byte command line 2007-02-12 09:48:39 -08:00
shmbuf.h
shmparam.h
sigcontext32.h
sigcontext.h
siginfo.h
signal.h [PATCH] Add TIF_RESTORE_SIGMASK 2006-09-26 10:52:26 +02:00
smp.h Use the APIC to determine the hardware processor id - x86_64 2007-05-09 12:30:48 -07:00
socket.h [NET]: Adding SO_TIMESTAMPNS / SCM_TIMESTAMPNS support 2007-04-25 22:24:21 -07:00
sockios.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
sparsemem.h
spinlock_types.h [PATCH] Remove 'volatile' from spinlock_types 2006-12-06 14:39:53 -08:00
spinlock.h [PATCH] x86-64: Don't keep interrupts disabled while spinning in spinlocks 2006-12-07 02:14:00 +01:00
stacktrace.h [PATCH] x86: add sysctl for kstack_depth_to_print 2006-12-07 02:14:11 +01:00
stat.h
statfs.h
string.h [PATCH] x86_64: Use __always_inline for __inline_memcpy 2006-06-26 10:48:14 -07:00
suspend.h [PATCH] x86-64: wakeup.S rename registers to reflect right names 2007-05-02 19:27:07 +02:00
swiotlb.h Revert "[IA64] swiotlb abstraction (e.g. for Xen)" 2007-03-06 13:31:45 -08:00
system.h x86: create asm/cmpxchg.h 2007-05-08 11:15:20 -07:00
tce.h [PATCH] Calgary IOMMU: consolidate per bus data structures 2006-09-26 10:52:31 +02:00
termbits.h tty: i386/x86_64 arbitary speed support 2007-05-08 11:15:03 -07:00
termios.h [PATCH] consolidate line discipline number definitions 2007-02-11 10:51:26 -08:00
therm_throt.h [PATCH] x86: Refactor thermal throttle processing 2006-09-26 10:52:42 +02:00
thread_info.h [PATCH] PM: Fix SMP races in the freezer 2006-12-13 09:05:49 -08:00
timex.h [PATCH] x86: Log reason why TSC was marked unstable 2007-05-02 19:27:08 +02:00
tlb.h
tlbflush.h [PATCH] x86-64: Remove duplicated code for reading control registers 2007-05-02 19:27:06 +02:00
topology.h [PATCH] sched: remove SMT nice 2007-03-05 07:57:51 -08:00
tsc.h [PATCH] i386: make x86_64 tsc header require i386 rather than vice-versa 2007-03-06 09:30:24 -08:00
types.h [PATCH] Centralise definitions of sector_t and blkcnt_t 2006-12-04 19:41:15 -08:00
uaccess.h [PATCH] kill bogus casts in amd64 uaccess.h 2007-03-14 15:27:50 -07:00
ucontext.h
unaligned.h
unistd.h utimensat implementation 2007-05-08 11:15:18 -07:00
unwind.h Remove stack unwinder for now 2006-12-15 08:47:51 -08:00
user32.h
user.h
vga.h [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
vsyscall32.h
vsyscall.h [PATCH] time: x86_64: re-enable vsyscall support for x86_64 2007-02-16 08:14:00 -08:00
xor.h