linux/arch/x86/kernel/fpu
Ingo Molnar b16529004f x86/fpu: Optimize fpu_copy() some more on lazy switching systems
The current fpu_copy() code on lazy switching CPUs always saves
into the current fpstate and then copies it over into the child
context:

		preempt_disable();
		if (!copy_fpregs_to_fpstate(src_fpu))
			fpregs_deactivate(src_fpu);
		preempt_enable();
		memcpy(&dst_fpu->state, &src_fpu->state, xstate_size);

That memcpy() can be avoided on all lazy switching setups except
really old FNSAVE-only systems: change fpu_copy() to directly save
into the child context, for both the lazy and the eager context
switching case.

Note that we still have to do a memcpy() back into the parent
context in the FNSAVE case, but this won't be executed on the
majority of x86 systems that got built in the last 10 years or so.

Reviewed-by: Borislav Petkov <bp@alien8.de>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-05-19 15:47:54 +02:00
..
bugs.c x86/fpu: Make check_fpu() init ordering independent 2015-05-19 15:47:46 +02:00
core.c x86/fpu: Optimize fpu_copy() some more on lazy switching systems 2015-05-19 15:47:54 +02:00
init.c x86/fpu: Remove failure paths from fpstate-alloc low level functions 2015-05-19 15:47:50 +02:00
Makefile x86/fpu: Factor out FPU bug checks into fpu/bugs.c 2015-05-19 15:47:45 +02:00
xsave.c x86/fpu: Simplify fpstate_init_curr() usage 2015-05-19 15:47:51 +02:00