x86/fpu: Also check fpu_lazy_restore() when use_eager_fpu()
authorRik van Riel <riel@redhat.com>
Fri, 6 Feb 2015 20:02:05 +0000 (15:02 -0500)
committerBorislav Petkov <bp@suse.de>
Thu, 19 Feb 2015 10:15:55 +0000 (11:15 +0100)
commit728e53fef429a0f3c9dda3587c3ccc57ad268b70
treea16de8baaff5e154e6d6343a4d7be55ca7b4f481
parent6a5fe8952bd676baf382d14df21e7b32b5d8943e
x86/fpu: Also check fpu_lazy_restore() when use_eager_fpu()

With Oleg's patch:

  33a3ebdc077f ("x86, fpu: Don't abuse has_fpu in __kernel_fpu_begin/end()")

kernel threads no longer have an FPU state even on systems with
use_eager_fpu().

That in turn means that a task may still have its FPU state
loaded in the FPU registers, if the task only got interrupted by
kernel threads from when it went to sleep, to when it woke up
again.

In that case, there is no need to restore the FPU state for
this task, since it is still in the registers.

The kernel can simply use the same logic to determine this as
is used for !use_eager_fpu() systems.

Signed-off-by: Rik van Riel <riel@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Link: http://lkml.kernel.org/r/1423252925-14451-9-git-send-email-riel@redhat.com
Signed-off-by: Borislav Petkov <bp@suse.de>
arch/x86/include/asm/fpu-internal.h