Tony Luck
4dcc29e157
[IA64] Workaround for RSE issue
...
Problem: An application violating the architectural rules regarding
operation dependencies and having specific Register Stack Engine (RSE)
state at the time of the violation, may result in an illegal operation
fault and invalid RSE state. Such faults may initiate a cascade of
repeated illegal operation faults within OS interruption handlers.
The specific behavior is OS dependent.
Implication: An application causing an illegal operation fault with
specific RSE state may result in a series of illegal operation faults
and an eventual OS stack overflow condition.
Workaround: OS interruption handlers that switch to kernel backing
store implement a check for invalid RSE state to avoid the series
of illegal operation faults.
The core of the workaround is the RSE_WORKAROUND code sequence
inserted into each invocation of the SAVE_MIN_WITH_COVER and
SAVE_MIN_WITH_COVER_R19 macros. This sequence includes hard-coded
constants that depend on the number of stacked physical registers
being 96. The rest of this patch consists of code to disable this
workaround should this not be the case (with the presumption that
if a future Itanium processor increases the number of registers, it
would also remove the need for this patch).
Move the start of the RBS up to a mod32 boundary to avoid some
corner cases.
The dispatch_illegal_op_fault code outgrew the spot it was
squatting in when built with this patch and CONFIG_VIRT_CPU_ACCOUNTING=y
Move it out to the end of the ivt.
Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-05-27 13:24:39 -07:00
..
cpufreq
[CPUFREQ] move policy's governor initialisation out of low-level drivers into cpufreq core
2007-10-04 18:40:57 -04:00
.gitignore
[IA64] Add gate.lds to list of files ignored by Git
2007-11-06 15:39:45 -08:00
acpi-ext.c
Pull acpi_os_free into release branch
2006-07-01 17:19:08 -04:00
acpi-processor.c
ACPI: Set _PSD ACPI_PDC_SMP_T_SWCOORD
2008-02-02 02:22:43 -05:00
acpi.c
[IA64] Properly unregister legacy interrupts
2008-05-14 16:00:14 -07:00
asm-offsets.c
ia64: use kbuild.h macros instead of defining macros in asm-offsets.c
2008-04-29 08:06:29 -07:00
audit.c
[PATCH] audit signal recipients
2007-05-11 05:38:25 -04:00
brl_emu.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
crash.c
[IA64] simplify notify hooks in mca.c
2008-04-22 08:56:38 -07:00
crash_dump.c
[IA64] kexec: Minor enhancement to includes in crash.c
2007-02-05 11:31:04 -08:00
cyclone.c
cyclone.c: silly use of volatile, __iomem fixes
2007-07-26 11:11:57 -07:00
efi.c
[IA64] Kernel parameter for max number of concurrent global TLB purges
2008-04-04 11:06:38 -07:00
efi_stub.S
[IA64] make efi_stub.S fit in 80 cols
2006-06-21 14:35:28 -07:00
entry.h
Remove obsolete #include <linux/config.h>
2006-06-30 19:25:36 +02:00
entry.S
[IA64] trivial cleanup for entry.S
2008-05-14 15:56:09 -07:00
err_inject.c
[IA64] typo s/kenrel/kernel/
2007-05-10 09:35:30 -07:00
esi.c
[IA64] esi-support
2006-06-21 11:19:22 -07:00
esi_stub.S
[IA64] esi-support
2006-06-21 11:19:22 -07:00
fsys.S
Pull miscellaneous into release branch
2008-04-17 10:14:51 -07:00
fsyscall_gtod_data.h
[IA64] generalize attribute of fsyscall_gtod_data
2008-02-04 15:36:36 -08:00
gate-data.S
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
gate.lds.S
[IA64] increase .data.patch offset
2007-12-07 14:28:02 -08:00
gate.S
[IA64] Stop bit for brl instruction
2007-07-09 13:37:44 -07:00
head.S
[IA64] VIRT_CPU_ACCOUNTING (accurate cpu time accounting)
2008-02-20 12:55:37 -08:00
ia64_ksyms.c
Generic semaphore implementation
2008-04-17 10:42:34 -04:00
init_task.c
[PATCH] take init_files to fs/file.c
2008-05-16 17:22:20 -04:00
iosapic.c
[IA64] remove remaining __FUNCTION__ occurrences
2008-03-06 09:19:27 -08:00
irq.c
[IA64] fix section mismatch in arch/ia64/kernel/irq.c
2008-04-30 14:08:01 -07:00
irq_ia64.c
[IA64] arch/ia64/kernel/: use time_* macros
2008-04-09 10:38:30 -07:00
irq_lsapic.c
[IA64] spelling fixes: arch/ia64/
2007-05-11 14:55:43 -07:00
ivt.S
[IA64] Workaround for RSE issue
2008-05-27 13:24:39 -07:00
jprobes.S
[IA64] enable trap code on slot 1
2006-12-12 12:00:55 -08:00
kprobes.c
[IA64] kprobes: kprobe-booster for ia64
2008-04-09 10:36:43 -07:00
machine_kexec.c
vmcoreinfo: fix the configuration dependencies
2008-02-07 08:42:25 -08:00
machvec.c
[IA64] Ensure that machvec is set up takes place before serial console
2007-07-25 11:12:47 -07:00
Makefile
Generic semaphore implementation
2008-04-17 10:42:34 -04:00
mca.c
[IA64] simplify notify hooks in mca.c
2008-04-22 08:56:38 -07:00
mca_asm.S
[IA64] Add API for allocating Dynamic TR resource.
2008-04-03 11:02:58 -07:00
mca_drv.c
[IA64] mca style cleanup
2008-02-04 15:42:06 -08:00
mca_drv.h
[IA64] mca style cleanup
2008-02-04 15:42:06 -08:00
mca_drv_asm.S
[IA64] mca style cleanup
2008-02-04 15:42:06 -08:00
minstate.h
[IA64] Workaround for RSE issue
2008-05-27 13:24:39 -07:00
module.c
[IA64] remove remaining __FUNCTION__ occurrences
2008-03-06 09:19:27 -08:00
msi_ia64.c
[IA64] Fix irq migration in multiple vector domain
2008-03-04 14:16:20 -08:00
numa.c
[IA64] Minimize per_cpu reservations.
2008-04-08 13:51:35 -07:00
pal.S
[IA64] reformat pal.S to fit in 80 columns, fix typos
2006-10-17 14:54:19 -07:00
palinfo.c
[IA64] Remove NULL pointer check for argument never passed as NULL.
2008-05-14 15:58:27 -07:00
patch.c
[IA64] Workaround for RSE issue
2008-05-27 13:24:39 -07:00
perfmon.c
[IA64] trivial cleanup for perfmon.c
2008-05-14 15:56:34 -07:00
perfmon_default_smpl.c
[IA64] remove remaining __FUNCTION__ occurrences
2008-03-06 09:19:27 -08: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
[IA64] spelling fixes: arch/ia64/
2007-05-11 14:55:43 -07:00
perfmon_montecito.h
[IA64] sparse cleanups
2006-12-07 10:48:19 -08:00
process.c
[IA64] fix interrupt masking for pending works on kernel leave
2008-05-14 15:55:35 -07:00
ptrace.c
[IA64] remove duplicate code for register access
2008-03-12 16:28:02 -07:00
relocate_kernel.S
[IA64] Removal of percpu TR cleanup in kexec code
2007-05-08 10:00:28 -07:00
sal.c
[IA64] allow user to force_pal_cache_flush
2008-05-14 15:42:07 -07:00
salinfo.c
ia64: use non-racy method for proc entries creation
2008-04-29 08:06:21 -07:00
setup.c
[IA64] Workaround for RSE issue
2008-05-27 13:24:39 -07:00
sigframe.h
[IA64] Add TIF_RESTORE_SIGMASK
2007-05-08 14:51:59 -07:00
signal.c
[IA64] TS_RESTORE_SIGMASK
2008-05-01 14:29:44 -07:00
smp.c
[IA64] smp.c coding style fix
2008-05-01 14:29:12 -07:00
smpboot.c
[IA64] Remove printk noise on unimplemented SAL_PHYSICAL_ID_INFO
2008-04-29 13:51:28 -07:00
sys_ia64.c
header cleaning: don't include smp_lock.h when not used
2007-05-08 11:15:07 -07:00
time.c
[IA64] fix section mismatch in arch/ia64/kernel/irq.c
2008-04-30 14:08:01 -07:00
topology.c
[IA64] fix section mismatch in arch/ia64/kernel/topology.c
2008-04-30 14:08:07 -07:00
traps.c
[IA64] honor notify_die() returning NOTIFY_STOP
2008-02-05 08:26:44 -08:00
unaligned.c
[IA64] arch/ia64/kernel/: use time_* macros
2008-04-09 10:38:30 -07:00
uncached.c
[IA64] allocate multiple contiguous pages via uncached allocator
2008-04-29 13:49:01 -07:00
unwind.c
[IA64] remove remaining __FUNCTION__ occurrences
2008-03-06 09:19:27 -08: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
[IA64] Workaround for RSE issue
2008-05-27 13:24:39 -07:00