linux/include/asm-ia64
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
..
sn [IA64] move XP and XPC to drivers/misc/sgi-xp 2008-04-22 15:08:17 -07:00
uv [IA64] Add header files for SGI UV platform 2008-05-14 14:20:25 -07:00
a.out.h
acpi-ext.h
acpi.h
agp.h
asmmacro.h
atomic.h
auxvec.h
bitops.h generic: implement __fls on all 64-bit archs 2008-04-26 19:21:16 +02:00
break.h
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
checksum.h
compat.h
cpu.h [IA64] fix section mismatch in arch/ia64/kernel/topology.c 2008-04-30 14:08:07 -07:00
cputime.h
current.h
cyclone.h
delay.h
device.h
div64.h
dma-mapping.h dma/ia64: update ia64 machvecs, swiotlb.c 2008-04-29 08:06:12 -07:00
dma.h
dmi.h dmi: clean-up dmi helper declarations 2008-05-01 08:04:01 -07:00
elf.h
emergency-restart.h
errno.h
esi.h
fb.h
fcntl.h
fpswa.h
fpu.h
futex.h asm-*/futex.h should include linux/uaccess.h 2008-04-30 08:29:52 -07:00
gcc_intrin.h KVM: ia64: Prepare some structure and routines for kvm use 2008-04-27 12:01:01 +03:00
hardirq.h
hpsim.h
hugetlb.h hugetlbfs: common code update for s390 2008-04-28 08:58:25 -07:00
hw_irq.h
ia32.h
ia64regs.h
ide.h
intel_intrin.h
intrinsics.h
io.h dmi: clean-up dmi helper declarations 2008-05-01 08:04:01 -07:00
ioctl.h
ioctls.h
iosapic.h
ipcbuf.h
irq.h
irq_regs.h
Kbuild
kdebug.h
kexec.h
kmap_types.h
kprobes.h
kregs.h
kvm.h KVM: ia64: Set KVM_IOAPIC_NUM_PINS to 48 2008-05-18 14:34:16 +03:00
kvm_host.h KVM: Rename VCPU_MP_STATE_* to KVM_MP_STATE_* 2008-04-27 12:04:13 +03:00
kvm_para.h KVM: ia64: Add header files for kvm/ia64 2008-04-27 12:01:02 +03:00
libata-portmap.h
linkage.h
local.h
machvec.h [IA64] machvec support for SGI UV platform 2008-05-14 14:22:04 -07:00
machvec_dig.h
machvec_hpsim.h
machvec_hpzx1.h dma/ia64: update ia64 machvecs, swiotlb.c 2008-04-29 08:06:12 -07:00
machvec_hpzx1_swiotlb.h dma/ia64: update ia64 machvecs, swiotlb.c 2008-04-29 08:06:12 -07:00
machvec_init.h
machvec_sn2.h dma/ia64: update ia64 machvecs, swiotlb.c 2008-04-29 08:06:12 -07:00
machvec_uv.h [IA64] machvec support for SGI UV platform 2008-05-14 14:22:04 -07:00
mc146818rtc.h
mca.h
mca_asm.h
meminit.h
mman.h
mmu.h
mmu_context.h
mmzone.h
module.h
msgbuf.h
mutex.h
namei.h
nodedata.h
numa.h
page.h hugetlbfs: architecture header cleanup 2008-04-28 08:58:25 -07:00
pal.h
param.h
parport.h
patch.h [IA64] Workaround for RSE issue 2008-05-27 13:24:39 -07:00
pci.h
percpu.h
perfmon.h
perfmon_default_smpl.h
pgalloc.h
pgtable.h mm: introduce pte_special pte bit 2008-04-28 08:58:23 -07:00
poll.h
posix_types.h
processor.h KVM: ia64: Prepare some structure and routines for kvm use 2008-04-27 12:01:01 +03:00
ptrace.h [IA64] Workaround for RSE issue 2008-05-27 13:24:39 -07:00
ptrace_offsets.h
resource.h
rse.h
rwsem.h
sal.h
scatterlist.h
sections.h [IA64] Workaround for RSE issue 2008-05-27 13:24:39 -07:00
segment.h
semaphore.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h
socket.h
sockios.h
sparsemem.h
spinlock.h
spinlock_types.h
stat.h
statfs.h
string.h
suspend.h
system.h fix ia64 local_irq_save() et.al. 2008-04-28 10:03:31 -07:00
termbits.h
termios.h
thread_info.h [IA64] TS_RESTORE_SIGMASK 2008-05-01 14:29:44 -07:00
timex.h
tlb.h
tlbflush.h
topology.h [IA64] Provide ACPI fixup for /proc/cpuinfo/physical_id 2008-04-29 15:05:29 -07:00
types.h ia64: types: use <asm-generic/int-*.h> for the ia64 architecture 2008-05-02 16:18:21 -07:00
uaccess.h
ucontext.h
unaligned.h kernel: Move arches to use common unaligned access 2008-04-29 08:06:27 -07:00
uncached.h [IA64] allocate multiple contiguous pages via uncached allocator 2008-04-29 13:49:01 -07:00
unistd.h
unwind.h
user.h
ustack.h
vga.h
xor.h