kernel_optimize_test/arch/mips
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
..
alchemy MIPS: Alchemy: Fix DB1100 GPIO registration 2014-02-04 13:18:02 +01:00
ar7 Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
ath79 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
bcm47xx MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +01:00
bcm63xx mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
boot mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
cavium-octeon mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
cobalt MIPS: Cobalt: Move to 8250/16550 serial early printk driver 2013-10-29 21:24:38 +01:00
configs MIPS: Kill CONFIG_MTD_PARTITIONS 2014-01-24 22:39:45 +01:00
dec DEC: Whitespace cleanup 2013-10-29 21:24:44 +01:00
emma MIPS: Remove panic_timeout settings 2013-11-26 12:12:27 +01:00
fw mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
include MIPS: Basic MSA context switching support 2014-03-26 23:09:10 +01:00
jazz Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
jz4740 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
kernel MIPS: Basic MSA context switching support 2014-03-26 23:09:10 +01:00
kvm mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
lantiq mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
lasat mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
lib mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
loongson mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
loongson1 MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
math-emu MIPS: Clear upper bits of FP registers on emulator writes 2014-03-26 23:09:10 +01:00
mm MIPS: Coherent Processing System SMP implementation 2014-03-26 23:00:12 +01:00
mti-malta MIPS: Malta: Allow use of MIPS CPS SMP implementation 2014-03-26 23:09:07 +01:00
mti-sead3 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
netlogic Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
oprofile MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +01:00
pci MIPS: Malta: Make use of generic CM support 2014-03-26 23:09:06 +01:00
pmcs-msp71xx MIPS: introduce MIPS_L1_CACHE_SHIFT_<N> 2014-01-24 22:39:55 +01:00
pnx833x MIPS: PNX833x: PNX8335_PCI_ETHERNET_INT depends on CONFIG_SOC_PNX8335 2013-08-05 13:34:22 +02:00
power MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
ralink Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
rb532 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip22 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip27 mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
sgi-ip32 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sibyte MIPS: Remove panic_timeout settings 2013-11-26 12:12:27 +01:00
sni MIPS: Cleanup CP0 PRId and CP1 FPIR register access masks 2013-09-18 20:25:19 +02:00
txx9 MIPS: TXx9: Fix build error if CONFIG_TOSHIBA_JMR3927 is not selected 2013-09-03 15:30:50 +02:00
vr41xx MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
Kbuild KVM/MIPS32: Infrastructure/build files. 2013-05-08 03:55:34 +02:00
Kbuild.platforms MIPS: PowerTV: Remove support code. 2013-10-29 21:25:17 +01:00
Kconfig MIPS: Basic MSA context switching support 2014-03-26 23:09:10 +01:00
Kconfig.debug MIPS: Add 8250/16550 serial early printk driver 2013-10-29 21:24:36 +01:00
Makefile MIPS: Add MSA register definitions & access 2014-03-26 23:09:10 +01:00