From: Linus Torvalds Date: Mon, 1 Oct 2012 18:10:52 +0000 (-0700) Subject: Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git... X-Git-Tag: v3.7-rc1~184 X-Git-Url: http://git.cascardo.eti.br/?a=commitdiff_plain;h=ac07f5c3cb0cf19258c55cdf210aa4ac91ca7330;p=cascardo%2Flinux.git Merge branch 'x86-fpu-for-linus' of git://git./linux/kernel/git/tip/tip Pull x86/fpu update from Ingo Molnar: "The biggest change is the addition of the non-lazy (eager) FPU saving support model and enabling it on CPUs with optimized xsaveopt/xrstor FPU state saving instructions. There are also various Sparse fixes" Fix up trivial add-add conflict in arch/x86/kernel/traps.c * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86, kvm: fix kvm's usage of kernel_fpu_begin/end() x86, fpu: remove cpu_has_xmm check in the fx_finit() x86, fpu: make eagerfpu= boot param tri-state x86, fpu: enable eagerfpu by default for xsaveopt x86, fpu: decouple non-lazy/eager fpu restore from xsave x86, fpu: use non-lazy fpu restore for processors supporting xsave lguest, x86: handle guest TS bit for lazy/non-lazy fpu host models x86, fpu: always use kernel_fpu_begin/end() for in-kernel FPU usage x86, kvm: use kernel_fpu_begin/end() in kvm_load/put_guest_fpu() x86, fpu: remove unnecessary user_fpu_end() in save_xstate_sig() x86, fpu: drop_fpu() before restoring new state from sigframe x86, fpu: Unify signal handling code paths for x86 and x86_64 kernels x86, fpu: Consolidate inline asm routines for saving/restoring fpu state x86, signal: Cleanup ifdefs and is_ia32, is_x32 --- ac07f5c3cb0cf19258c55cdf210aa4ac91ca7330 diff --cc arch/x86/kernel/cpu/common.c index 134505e07b09,b0fe078614d8..761cb3547041 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@@ -1297,8 -1297,9 +1297,7 @@@ void __cpuinit cpu_init(void dbg_restore_debug_regs(); fpu_init(); - xsave_init(); - raw_local_save_flags(kernel_eflags); - if (is_uv_system()) uv_cpu_init(); } diff --cc arch/x86/kernel/traps.c index cfbe3fc41586,4f4aba0551b0..8276dc6794cc --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@@ -644,7 -630,8 +645,9 @@@ EXPORT_SYMBOL_GPL(math_state_restore) dotraplinkage void __kprobes do_device_not_available(struct pt_regs *regs, long error_code) { + exception_enter(regs); + BUG_ON(use_eager_fpu()); + #ifdef CONFIG_MATH_EMULATION if (read_cr0() & X86_CR0_EM) { struct math_emu_info info = { };