x86, fpu: split FPU state from task struct - v5
Split the FPU save area from the task struct. This allows easy migration of FPU context, and it's generally cleaner. It also allows the following two optimizations: 1) only allocate when the application actually uses FPU, so in the first lazy FPU trap. This could save memory for non-fpu using apps. Next patch does this lazy allocation. 2) allocate the right size for the actual cpu rather than 512 bytes always. Patches enabling xsave/xrstor support (coming shortly) will take advantage of this. Signed-off-by:Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by:
Arjan van de Ven <arjan@linux.intel.com> Signed-off-by:
Ingo Molnar <mingo@elte.hu> Signed-off-by:
Thomas Gleixner <tglx@linutronix.de>
Showing
- arch/x86/kernel/Makefile 1 addition, 0 deletionsarch/x86/kernel/Makefile
- arch/x86/kernel/i387.c 46 additions, 34 deletionsarch/x86/kernel/i387.c
- arch/x86/kernel/process.c 35 additions, 0 deletionsarch/x86/kernel/process.c
- arch/x86/kernel/process_32.c 1 addition, 1 deletionarch/x86/kernel/process_32.c
- arch/x86/kernel/process_64.c 1 addition, 1 deletionarch/x86/kernel/process_64.c
- arch/x86/kernel/traps_32.c 1 addition, 5 deletionsarch/x86/kernel/traps_32.c
- arch/x86/kernel/traps_64.c 5 additions, 1 deletionarch/x86/kernel/traps_64.c
- arch/x86/math-emu/fpu_entry.c 2 additions, 2 deletionsarch/x86/math-emu/fpu_entry.c
- arch/x86/math-emu/fpu_system.h 13 additions, 13 deletionsarch/x86/math-emu/fpu_system.h
- arch/x86/math-emu/reg_ld_str.c 2 additions, 2 deletionsarch/x86/math-emu/reg_ld_str.c
- include/asm-x86/i387.h 17 additions, 18 deletionsinclude/asm-x86/i387.h
- include/asm-x86/processor.h 4 additions, 3 deletionsinclude/asm-x86/processor.h
- include/asm-x86/thread_info.h 8 additions, 0 deletionsinclude/asm-x86/thread_info.h
- include/asm-x86/thread_info_32.h 0 additions, 2 deletionsinclude/asm-x86/thread_info_32.h
- include/asm-x86/thread_info_64.h 0 additions, 2 deletionsinclude/asm-x86/thread_info_64.h
- kernel/fork.c 25 additions, 6 deletionskernel/fork.c
Loading