OpenCloudOS-Kernel/arch/mips/kernel
Paul Burton ff3aa5f296 MIPS: Don't require FPU on sigcontext setup/restore
When a task which has used the FPU at some point in its past takes a
signal the kernel would previously always require the task to take
ownership of the FPU whilst setting up or restoring from the sigcontext.
That means that if the task has not used the FPU within this timeslice
then the kernel would enable the FPU, restore the task's FP context into
FPU registers and then save them into the sigcontext. This seems
inefficient, and if the signal handler doesn't use FP then enabling the
FPU & the extra memory accesses are entirely wasted work.

This patch modifies the sigcontext setup & restore code to copy directly
between the tasks saved FP context & the sigcontext for any tasks which
have used FP in the past but are not currently the FPU owner (ie. have
not used FP in this timeslice).

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Reviewed-by: Qais Yousef <qais.yousef@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6423/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-03-26 23:09:09 +01:00
..
.gitignore [MIPS] Ignore vmlinux.lds generated files 2008-08-26 09:10:27 +01:00
8250-platform.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
Makefile MIPS: Coherent Processing System SMP implementation 2014-03-26 23:00:12 +01:00
asm-offsets.c MIPS: Coherent Processing System SMP implementation 2014-03-26 23:00:12 +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: Coherent Processing System SMP implementation 2014-03-26 23:00:12 +01:00
crash.c mips: delete non-required instances of include <linux/init.h> 2014-01-24 22:39:56 +01:00
crash_dump.c mips: remove savemaxmem parameter setup 2013-07-03 16:08:03 -07: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 mips: convert to clocksource_register_hz/khz 2011-02-21 13:33:50 -08:00
csrc-sb1250.c MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
early_printk.c early_printk: consolidate random copies of identical code 2013-04-29 18:28:13 -07:00
early_printk_8250.c MIPS: Add 8250/16550 serial early printk driver 2013-10-29 21:24:36 +01: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: Add support for FTLBs 2014-01-22 20:19:00 +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 MIPS: irq: Remove IRQF_DISABLED 2011-12-07 22:03:45 +00:00
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-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
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
jump_label.c MIPS: jump label: Add MIPS support. 2011-01-18 19:30:24 +01:00
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
mcount.S MIPS: Ftrace: Fix function tracing return address to match 2013-09-03 14:46:27 +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
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
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.c MIPS: perf: Reorganize contents of perf support files. 2011-10-24 23:34:26 +01:00
perf_event_mipsxx.c MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +01:00
proc.c MIPS: /proc/cpuinfo: always print the supported ISA 2014-01-24 22:39:46 +01:00
process.c MIPS: replace open-coded init_dsp 2014-01-24 22:39:45 +01:00
prom.c mips: use common of_flat_dt_get_machine_name 2013-10-09 20:03:57 -05:00
ptrace.c MIPS: Simplify FP context access 2014-03-26 23:09:09 +01:00
ptrace32.c MIPS: Simplify FP context access 2014-03-26 23:09:09 +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: Support for 64-bit FP with O32 binaries 2014-01-13 23:40:56 +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 update David Miller's old email address 2011-04-06 06:19:38 -07:00
relocate_kernel.S MIPS: kdump: Skip walking indirection page for crashkernels 2013-09-05 20:53:37 +02:00
reset.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
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
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: Don't require FPU on sigcontext setup/restore 2014-03-26 23:09:09 +01:00
signal32.c MIPS: Don't require FPU on sigcontext setup/restore 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
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 mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
spram.c MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +01:00
stacktrace.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
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 MIPS: Add arch generic CPU hotplug 2009-06-24 18:34:40 +01:00
traps.c MIPS: Add 1074K CPU support explicitly. 2014-03-06 21:25:21 +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