linux/arch/ia64/kernel
Peter Chubb 05062d96a2 [PATCH] ia64: fix floating-point preemption problem
There've been reports of problems with CONFIG_PREEMPT=y and the high
floating point partition.  This is caused by the possibility of preemption
and rescheduling on a different processor while saving or restioirng the
high partition.

The only places where the FPU state is touched are in ptrace, in
switch_to(), and where handling a floating-point exception.  In switch_to()
preemption is off.  So it's only in trap.c and ptrace.c that we need to
prevent preemption.

Here is a patch that adds commentary to make the conditions clear, and adds
appropriate preempt_{en,dis}able() calls to make it so.  In trap.c I use
preempt_enable_no_resched(), as we're about to return to user space where
the preemption flag will be checked anyway.

Signed-off-by: Peter Chubb <peterc@gelato.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08 16:21:14 -07:00
..
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
acpi-ext.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
acpi.c [IA64] use common pxm function 2005-05-03 13:33:18 -07:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
brl_emu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cyclone.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
domain.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [IA64] Avoid .spillpsp directive in handcoded assembly 2005-05-10 13:52:00 -07:00
entry.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fsys.S [IA64] fix ia64 syscall auditing 2005-05-03 13:45:39 -07:00
gate-data.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
gate.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
gate.lds.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
head.S [IA64] Fix build errors for !HOTPLUG case. 2005-04-22 14:46:24 -07:00
ia64_ksyms.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iosapic.c [IA64] iosapic.c: typo ... s/spin_unlock_irq/spin_unlock/ 2005-04-25 13:27:48 -07:00
irq.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_ia64.c [IA64] vector sharing (Large I/O system support) 2005-04-25 13:26:23 -07:00
irq_lsapic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ivt.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
machvec.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mca.c [IA64] Cleanup compile warnings for ski config 2005-06-01 15:20:17 -07:00
mca_asm.S [IA64] cpu hotplug: return offlined cpus to SAL 2005-04-22 14:44:40 -07:00
mca_drv.c [IA64] MCA recovery improvements 2005-05-03 13:47:42 -07:00
mca_drv.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mca_drv_asm.S [IA64] MCA recovery improvements 2005-05-03 13:47:42 -07:00
minstate.h [IA64] Fix stack placement when INIT hits in kernel mode. 2005-05-06 10:16:07 -07:00
module.c [IA64] Module gp must point to valid memory 2005-06-08 11:41:31 -07:00
pal.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
palinfo.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
patch.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon.c [IA64] Use "PER_CPU" form of EXPORT macro 2005-05-31 10:38:32 -07:00
perfmon_default_smpl.c [IA64] perfmon: make pfm_sysctl a global, and other cleanup 2005-04-25 13:08:30 -07:00
perfmon_generic.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon_itanium.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon_mckinley.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
process.c [IA64] Fix two warnings introduced by perfmon patches. 2005-05-03 16:21:45 -07:00
ptrace.c [PATCH] ia64: fix floating-point preemption problem 2005-06-08 16:21:14 -07:00
sal.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
salinfo.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c [IA64] Update comment to describe modes set in default control register. 2005-06-08 12:12:48 -07:00
sigframe.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
signal.c [IA64] fix ia64 syscall auditing 2005-05-03 13:45:39 -07:00
smp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smpboot.c [IA64] fix "section mismatch" compile-time-error 2005-05-09 10:16:17 -07:00
sys_ia64.c [IA64] sys_mmap doesn't follow posix.1 when parameter len=0 2005-05-26 10:19:07 -07:00
time.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
topology.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] ia64: fix floating-point preemption problem 2005-06-08 16:21:14 -07:00
unaligned.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unwind.c [IA64] Tighten up unw_unwind_to_user check 2005-04-25 11:45:26 -07:00
unwind_decoder.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unwind_i.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vmlinux.lds.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00