linux/arch/mips/kernel
Paul Burton 1db1af84d6 MIPS: Basic MSA context switching support
This patch adds support for context switching the MSA vector registers.
These 128 bit vector registers are aliased with the FP registers - an
FP register accesses the least significant bits of the vector register
with which it is aliased (ie. the register with the same index). Due to
both this & the requirement that the scalar FPU must be 64-bit (FR=1) if
enabled at the same time as MSA the kernel will enable MSA & scalar FP
at the same time for tasks which use MSA. If we restore the MSA vector
context then we might as well enable the scalar FPU since the reason it
was left disabled was to allow for lazy FP context restoring - but we
just restored the FP context as it's a subset of the vector context. If
we restore the FP context and have previously used MSA then we have to
restore the whole vector context anyway (see comment in
enable_restore_fp_context for details) so similarly we might as well
enable MSA.

Thus if a task does not use MSA then it will continue to behave as
without this patch - the scalar FP context will be saved & restored as
usual. But if a task executes an MSA instruction then it will save &
restore the vector context forever more.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6431/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-03-26 23:09:10 +01:00
..
.gitignore
8250-platform.c
asm-offsets.c MIPS: Don't assume 64-bit FP registers for context switch 2014-03-26 23:09:10 +01:00
binfmt_elfn32.c MIPS: Compat: Fix cputime_to_timeval() arguments in compat binfmt_elf. 2013-06-06 16:11:26 +02:00
binfmt_elfo32.c MIPS: Support for 64-bit FP with O32 binaries 2014-01-13 23:40:56 +01:00
bmips_vec.S mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
branch.c MIPS: Cleanup indentation and whitespace 2013-07-01 15:10:57 +02:00
cevt-bcm1480.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
cevt-ds1287.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
cevt-gic.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
cevt-gt641xx.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
cevt-r4k.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
cevt-sb1250.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
cevt-smtc.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
cevt-txx9.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
cps-vec.S MIPS: Coherent Processing System SMP implementation 2014-03-26 23:00:12 +01:00
cpu-bugs64.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
cpu-probe.c MIPS: Detect the MSA ASE 2014-03-26 23:09:10 +01:00
crash_dump.c mips: remove savemaxmem parameter setup 2013-07-03 16:08:03 -07:00
crash.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
csrc-bcm1480.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
csrc-gic.c MIPS: Refactor GIC clocksource code. 2013-05-09 17:55:20 +02:00
csrc-ioasic.c MIPS: DECstation HRT initialization rearrangement 2013-09-13 11:56:13 +02:00
csrc-r4k.c
csrc-sb1250.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
early_printk_8250.c MIPS: Add 8250/16550 serial early printk driver 2013-10-29 21:24:36 +01:00
early_printk.c early_printk: consolidate random copies of identical code 2013-04-29 18:28:13 -07:00
entry.S Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-12-12 12:22:13 -08:00
ftrace.c MIPS: O32 / 32-bit: Always copy 4 stack arguments. 2013-10-29 21:25:02 +01:00
genex.S MIPS: Basic MSA context switching support 2014-03-26 23:09:10 +01:00
gpio_txx9.c
head.S MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
i8253.c
i8259.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
idle.c MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +01:00
irq_cpu.c MIPS: Panic messages should not end in \n. 2013-10-29 21:24:19 +01:00
irq_txx9.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
irq-gic.c MIPS: Remove gcmpregs.h 2014-03-26 23:09:07 +01:00
irq-gt641xx.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
irq-msc01.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
irq-rm7000.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
irq.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
jump_label.c
kgdb.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
kprobes.c kprobes/mips: Fix to check double free of insn slot 2013-05-22 12:48:30 +02:00
linux32.c unify compat fanotify_mark(2), switch to COMPAT_SYSCALL_DEFINE 2013-05-09 13:46:38 -04:00
machine_kexec.c MIPS: kdump: Add support 2012-12-13 16:46:47 +01:00
Makefile MIPS: Coherent Processing System SMP implementation 2014-03-26 23:00:12 +01:00
mcount.S MIPS: Ftrace: Fix function tracing return address to match 2013-09-03 14:46:27 +02:00
mips_ksyms.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mips_machine.c MIPS: move mips_{set,get}_machine_name() to a more generic place 2013-05-08 01:19:07 +02:00
mips-cm.c MIPS: Add generic CM probe & access code 2014-03-06 21:25:22 +01:00
mips-cpc.c MIPS: Add CPC probe, access functions 2014-03-06 21:25:23 +01:00
mips-mt-fpaff.c sched: Rename sched.c as sched/core.c in comments and Documentation 2013-06-19 12:58:42 +02:00
mips-mt.c Merge branch 'master' into for-next 2012-04-08 21:48:52 +02:00
module-rela.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
module.c MIPS: Use NUMA_NO_NODE instead of -1 for node ID. 2013-10-29 21:24:14 +01:00
octeon_switch.S MIPS: stack protector: Fix per-task canary switch 2013-10-07 15:31:04 +02:00
perf_event_mipsxx.c MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +01:00
perf_event.c
proc.c MIPS: Detect the MSA ASE 2014-03-26 23:09:10 +01:00
process.c MIPS: Basic MSA context switching support 2014-03-26 23:09:10 +01:00
prom.c mips: use common of_flat_dt_get_machine_name 2013-10-09 20:03:57 -05:00
ptrace32.c MIPS: Simplify FP context access 2014-03-26 23:09:09 +01:00
ptrace.c MIPS: Don't assume 64-bit FP registers for FP regset 2014-03-26 23:09:10 +01:00
r4k_fpu.S MIPS: Support for 64-bit FP with O32 binaries 2014-01-13 23:40:56 +01:00
r4k_switch.S MIPS: Basic MSA context switching support 2014-03-26 23:09:10 +01:00
r2300_fpu.S MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
r2300_switch.S MIPS: stack protector: Fix per-task canary switch 2013-10-07 15:31:04 +02:00
r6000_fpu.S
relocate_kernel.S MIPS: kdump: Skip walking indirection page for crashkernels 2013-09-05 20:53:37 +02:00
reset.c
rtlx-cmp.c MIPS: APRP: Add RTLX API support for CMP platforms. 2014-01-22 20:19:02 +01:00
rtlx-mt.c MIPS: APRP: Split RTLX support into separate files. 2014-01-22 20:19:02 +01:00
rtlx.c MIPS: APRP: Code formatting clean-ups. 2014-01-22 20:19:02 +01:00
scall32-o32.S MIPS: seccomp: Handle indirect system calls (o32) 2014-03-26 23:09:08 +01:00
scall64-64.S MIPS: seccomp: Handle indirect system calls (o32) 2014-03-26 23:09:08 +01:00
scall64-n32.S MIPS: seccomp: Handle indirect system calls (o32) 2014-03-26 23:09:08 +01:00
scall64-o32.S MIPS: seccomp: Handle indirect system calls (o32) 2014-03-26 23:09:08 +01:00
segment.c MIPS: Add debugfs file to print the segmentation control registers 2014-01-22 20:19:00 +01:00
setup.c MIPS: Fix start of free memory when using initrd 2013-10-29 21:24:23 +01:00
signal32.c MIPS: Replace hardcoded 32 with NUM_FPU_REGS in ptrace 2014-03-26 23:09:09 +01:00
signal_n32.c Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
signal-common.h most of set_current_blocked() callers want SIGKILL/SIGSTOP removed from set 2012-06-01 12:58:51 -04:00
signal.c MIPS: Replace hardcoded 32 with NUM_FPU_REGS in ptrace 2014-03-26 23:09:09 +01:00
smp-bmips.c MIPS: BMIPS: change compile time checks to runtime checks 2014-01-22 20:18:51 +01:00
smp-cmp.c MIPS: Move GIC IPI functions out of smp-cmp.c 2014-03-06 21:25:22 +01:00
smp-cps.c MIPS: Coherent Processing System SMP implementation 2014-03-26 23:00:12 +01:00
smp-gic.c MIPS: Move GIC IPI functions out of smp-cmp.c 2014-03-06 21:25:22 +01:00
smp-mt.c MIPS: GIC: Send IPIs using the GIC 2014-01-22 20:18:57 +01:00
smp-up.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
smp.c MIPS: SMP: kill redundant call of generic_smp_call_function_single_interrupt() 2013-10-29 21:23:45 +01:00
smtc-asm.S MIPS: microMIPS: Add support for exception handling. 2013-05-09 17:55:18 +02:00
smtc-proc.c mips: single_open() leaks 2013-05-05 00:10:21 -04:00
smtc.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00
spinlock_test.c
spram.c MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +01:00
stacktrace.c
sync-r4k.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
syscall.c Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
time.c MIPS: Optimize current_cpu_type() for better code. 2013-09-17 18:50:53 +02:00
topology.c
traps.c MIPS: Basic MSA context switching support 2014-03-26 23:09:10 +01:00
unaligned.c MIPS: Declare emulate_load_store_microMIPS as a static function. 2013-07-01 15:10:57 +02:00
vdso.c coredump: remove VM_ALWAYSDUMP flag 2012-03-23 16:58:42 -07:00
vmlinux.lds.S MIPS: Discard .eh_frame sections in linker script. 2013-08-26 15:33:41 +02:00
vpe-cmp.c MIPS: APRP: Add VPE loader support for CMP platforms. 2014-01-22 20:19:02 +01:00
vpe-mt.c MIPS: APRP: Code formatting clean-ups. 2014-01-22 20:19:02 +01:00
vpe.c Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
watch.c MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code 2013-07-14 19:36:51 -04:00