[PATCH] x86: fix broken SMP boot sequence
authorJames Bottomley <James.Bottomley@SteelEye.com>
Fri, 24 Feb 2006 21:04:14 +0000 (13:04 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 24 Feb 2006 22:31:38 +0000 (14:31 -0800)
commit2b932f6cf052920fb3a6281499e08209b08f5086
treec2710e09dd40ee9733bcd77234d6373acec741d2
parent1e275d406bf6b88e4de6925cf594b64bb2ec49bc
[PATCH] x86: fix broken SMP boot sequence

Recent GDT changes broke the SMP boot sequence if the booting CPU is
numbered anything other than zero.  There's also a subtle source of error
in that the boot time CPU now uses cpu_gdt_table (which is actually the GDT
for booting CPUs in head.S).  This patch fixes both problems by making GDT
descriptors themselves allocated from a per_cpu area and switching to them
in cpu_init(), which now means that cpu_gdt_table is exclusively used for
booting CPUs again.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Cc: Zachary Amsden <zach@vmware.com>
Cc: Matt Tolentino <metolent@snoqualmie.dp.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/kernel/cpu/common.c
arch/i386/kernel/efi.c
arch/i386/kernel/head.S
arch/i386/kernel/i386_ksyms.c
arch/i386/kernel/smpboot.c
include/asm-i386/desc.h