1
linux/include/asm-i386
James Bottomley 9ee79a3d37 [PATCH] x86: fix PDA variables to work during boot
The current PDA code, which went in in post 2.6.19 has a flaw in that it
doesn't correctly cycle the GDT and %GS segment through the boot PDA,
the CPU PDA and finally the per-cpu PDA.

The bug generally doesn't show up if the boot CPU id is zero, but
everything falls apart for a non zero boot CPU id.  The basically kills
voyager which is perfectly capable of doing non zero CPU id boots, so
voyager currently won't boot without this.

The fix is to be careful and actually do the GDT setups correctly.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-01-22 19:39:36 -08:00
..
mach-bigsmp
mach-default [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
mach-es7000 [PATCH] i386: Allow to use GENERICARCH for UP kernels 2006-09-26 10:52:26 +02:00
mach-generic
mach-numaq
mach-summit [PATCH] i386: Fix compilation with UP genericarch 2006-11-28 20:12:59 +01:00
mach-visws [PATCH] visws build fix 2006-10-28 11:30:52 -07:00
mach-voyager IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
8253pit.h
a.out.h
acpi.h Pull trivial into test branch 2006-12-16 00:45:07 -05:00
agp.h
alternative-asm.i Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
alternative.h [PATCH] paravirt: Patch inline replacements for paravirt intercepts 2006-12-07 02:14:08 +01:00
apic.h [PATCH] paravirt: Add APIC accessors to paravirt-ops. 2006-12-07 02:14:08 +01:00
apicdef.h
arch_hooks.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
atomic.h Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
auxvec.h
bitops.h
boot.h [PATCH] i386: Restore CONFIG_PHYSICAL_START option 2007-01-05 23:55:23 -08:00
bug.h [PATCH] Generic BUG for i386 2006-12-08 08:28:39 -08:00
bugs.h [PATCH] paravirt: Allow selected bug checks to be 2006-12-07 02:14:08 +01:00
byteorder.h
cache.h
cacheflush.h [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
checksum.h [NET]: I386 checksum annotations and cleanups. 2006-12-02 21:23:19 -08:00
cpu.h [PATCH] i386: introduce the mechanism of disabling cpu hotplug control 2006-12-07 02:14:10 +01:00
cpufeature.h [PATCH] i386: i386 add Intel BTS cpufeature bit and detection (take 2) 2006-12-07 02:14:11 +01:00
cputime.h
current.h [PATCH] i386: Implement "current" with the PDA 2006-12-07 02:14:03 +01:00
debugreg.h
delay.h [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
desc.h [PATCH] paravirt: Patch inline replacements for paravirt intercepts 2006-12-07 02:14:08 +01: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] Pass struct dev pointer to dma_cache_sync() 2006-12-07 08:39:41 -08:00
dma.h
dmi.h
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] compile error of register_memory() 2006-12-22 08:55:49 -08:00
edac.h
elf.h [PATCH] i386: Fix places where using %gs changes the usermode ABI 2006-12-07 02:14:02 +01:00
emergency-restart.h
errno.h
fcntl.h
fixmap.h [PATCH] x86: make __FIXADDR_TOP variable to allow it to make space for a hypervisor 2006-09-26 08:48:55 -07:00
floppy.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
frame.i Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
futex.h [PATCH] mm: pagefault_{disable,enable}() 2006-12-07 08:39:21 -08:00
genapic.h [PATCH] x86: fix the irqbalance quirk for E7320/E7520/E7525 2006-12-07 02:14:10 +01:00
hardirq.h
highmem.h
hpet.h IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
hw_irq.h [PATCH] i386/x86_64: Remove global IO_APIC_VECTOR 2006-10-08 12:24:02 -07:00
hypertransport.h [PATCH] Initial generic hypertransport interrupt support 2006-10-04 07:55:29 -07:00
i387.h [PATCH] i386: add sleazy FPU optimization 2006-12-07 02:14:01 +01:00
i8253.h
i8259.h
ide.h [PATCH] ide: more conversion to pci_get APIs 2006-12-08 08:29:03 -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 i386: clean up io-apic accesses 2006-11-01 09:11:00 -08:00
io.h [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
ioctl.h
ioctls.h
ipc.h
ipcbuf.h
irq_regs.h [PATCH] i386: Store the interrupt regs pointer in the PDA 2006-12-07 02:14:03 +01:00
irq.h [PATCH] x86: fix the irqbalance quirk for E7320/E7520/E7525 2006-12-07 02:14:10 +01:00
irqflags.h [PATCH] paravirt: Patch inline replacements for paravirt intercepts 2006-12-07 02:14:08 +01:00
ist.h
k8.h
Kbuild [PATCH] cleanup asm/setup.h userspace visibility 2006-12-07 08:39:46 -08:00
kdebug.h
kexec.h [PATCH] i386: Avoid overwriting the current pgd (V4, i386) 2006-09-26 10:52:38 +02:00
kmap_types.h
kprobes.h
ldt.h
linkage.h
local.h
math_emu.h [PATCH] i386: PDA: Fix math emulator for new pt_regs 2006-12-07 02:14:03 +01:00
mc146818rtc.h
mca_dma.h [PATCH] kernel-doc for kernel/dma.c 2006-10-03 08:03:41 -07:00
mca.h
mce.h
mman.h
mmu_context.h [PATCH] i386: Use %gs as the PDA base-segment in the kernel 2006-12-07 02:14:02 +01:00
mmu.h
mmx.h
mmzone.h [PATCH] silence unused pgdat warning from alloc_bootmem_node and friends 2006-12-07 08:39:23 -08:00
module.h [PATCH] i386: always enable regparm 2006-12-07 02:14:12 +01:00
mpspec_def.h [PATCH] x86-64: remove remaining pc98 code 2006-12-07 02:14:19 +01:00
mpspec.h
msgbuf.h
msidef.h [PATCH] genirq: i386 irq: Move msi message composition into io_apic.c 2006-10-04 07:55:28 -07:00
msr.h Merge ../linus 2006-12-12 17:41:41 -05:00
mtrr.h
mutex.h [PATCH] i386: Remove lock section support in mutex.h 2006-09-26 10:52:31 +02:00
namei.h
nmi.h [PATCH] x86: all cpu backtrace 2006-12-07 02:14:01 +01:00
numa.h
numaq.h
page.h [PATCH] paravirt: Preparatory mmu header movement 2006-12-07 02:14:08 +01:00
param.h [PATCH] cleanup asm/setup.h userspace visibility 2006-12-07 08:39:46 -08:00
paravirt.h [PATCH] paravirt: Add MMU virtualization to paravirt_ops 2006-12-07 02:14:08 +01:00
parport.h
pci-direct.h
pci.h
pda.h [PATCH] i386: Store the interrupt regs pointer in the PDA 2006-12-07 02:14:03 +01:00
percpu.h [PATCH] i386: espfix cleanup 2006-12-07 02:14:01 +01:00
pgalloc.h
pgtable-2level-defs.h
pgtable-2level.h [PATCH] paravirt: fix missing pte update 2006-12-07 02:14:09 +01:00
pgtable-3level-defs.h
pgtable-3level.h [PATCH] paravirt: fix missing pte update 2006-12-07 02:14:09 +01:00
pgtable.h Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
poll.h
posix_types.h
processor.h [PATCH] x86: fix PDA variables to work during boot 2007-01-22 19:39:36 -08:00
ptrace-abi.h [PATCH] Split i386 and x86_64 ptrace.h 2006-09-26 08:49:10 -07:00
ptrace.h [PATCH] i386: Use %gs as the PDA base-segment in the kernel 2006-12-07 02:14:02 +01:00
resource.h
rtc.h
rwlock.h [PATCH] i386: Clean up spin/rwlocks 2006-09-26 10:52:32 +02:00
rwsem.h [PATCH] lockdep: name some old style locks 2006-12-07 08:39:36 -08:00
scatterlist.h
seccomp.h
sections.h
segment.h [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
semaphore.h [PATCH] i386: Use early clobbers for semaphores now 2006-09-27 14:39:51 -07:00
sembuf.h
serial.h
setup.h Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h [PATCH] headers_check: move inclusion of <linux/linkage.h> in <asm-i386/signal.h> 2006-09-13 07:32:15 -07:00
smp.h [PATCH] i386: Implement smp_processor_id() with the PDA 2006-12-07 02:14:03 +01:00
socket.h
sockios.h
sparsemem.h
spinlock_types.h [PATCH] Remove 'volatile' from spinlock_types 2006-12-06 14:39:53 -08:00
spinlock.h [PATCH] paravirt: Patch inline replacements for paravirt intercepts 2006-12-07 02:14:08 +01:00
srat.h
stacktrace.h [PATCH] i386: Do stacktracer conversion too 2006-09-26 10:52:34 +02:00
stat.h
statfs.h
string.h
suspend.h Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
sync_bitops.h [PATCH] x86: implement always-locked bit ops, for memory shared with an SMP hypervisor 2006-09-26 08:48:55 -07:00
system.h [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
termbits.h [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
termios.h
therm_throt.h [PATCH] x86: Add a cumulative thermal throttle event counter. 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
time.h [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
timer.h
timex.h
tlb.h
tlbflush.h [PATCH] paravirt: Add MMU virtualization to paravirt_ops 2006-12-07 02:14:08 +01:00
topology.h [PATCH] sched: add option to serialize load balancing 2006-12-10 09:55:43 -08:00
tsc.h [PATCH] x86: remove config.h includes from asm-i386 & asm-x86_64 2006-09-26 10:52:36 +02:00
types.h [PATCH] Centralise definitions of sector_t and blkcnt_t 2006-12-04 19:41:15 -08:00
uaccess.h [PATCH] uaccess.h: match kernel-doc and function names 2006-10-11 11:14:24 -07:00
ucontext.h
unaligned.h
unistd.h [PATCH] remove kernel syscalls 2006-12-07 08:39:37 -08:00
unwind.h Remove stack unwinder for now 2006-12-15 08:47:51 -08:00
user.h
vga.h
vic.h [VOYAGER] fix up ptregs removal mess 2006-10-12 22:25:03 -05:00
vm86.h [PATCH] i386: Update sys_vm86 to cope with changed pt_regs and %gs usage 2006-12-07 02:14:03 +01:00
voyager.h [VOYAGER] fix up attribute packed specifiers in voyager.h 2006-10-12 22:23:18 -05:00
xor.h