diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-04-23 09:55:34 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-05-19 16:47:22 +0300 |
commit | bfd6fc0581e7e2f3fa0b3e5e21cd6e54c3fbd16f (patch) | |
tree | 134db5ff7e3bcaea504f6725e9733b0408a30aed | |
parent | e102f30f4e22b7eb8f3dfbe7fec334cffb350fd8 (diff) | |
download | linux-bfd6fc0581e7e2f3fa0b3e5e21cd6e54c3fbd16f.tar.xz |
x86/fpu: Add debugging check to fpu_copy()
Also add a bit of documentation.
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>
-rw-r--r-- | arch/x86/kernel/fpu/core.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c index 2cc2380b95ce..3aeab3f12835 100644 --- a/arch/x86/kernel/fpu/core.c +++ b/arch/x86/kernel/fpu/core.c @@ -203,8 +203,18 @@ void fpstate_free(struct fpu *fpu) } EXPORT_SYMBOL_GPL(fpstate_free); +/* + * Copy the current task's FPU state to a new task's FPU context. + * + * In the 'eager' case we just save to the destination context. + * + * In the 'lazy' case we save to the source context, mark the FPU lazy + * via stts() and copy the source context into the destination context. + */ static void fpu_copy(struct task_struct *dst, struct task_struct *src) { + WARN_ON(src != current); + if (use_eager_fpu()) { memset(&dst->thread.fpu.state->xsave, 0, xstate_size); __save_fpu(dst); |