• O
    x86, fpu: Don't abuse has_fpu in __kernel_fpu_begin/end() · 33a3ebdc
    Oleg Nesterov 提交于
    Now that we have in_kernel_fpu we can remove __thread_clear_has_fpu()
    in __kernel_fpu_begin(). And this allows to replace the asymmetrical
    and nontrivial use_eager_fpu + tsk_used_math check in kernel_fpu_end()
    with the same __thread_has_fpu() check.
    
    The logic becomes really simple; if _begin() does save() then _end()
    needs restore(), this is controlled by __thread_has_fpu(). Otherwise
    they do clts/stts unless use_eager_fpu().
    
    Not only this makes begin/end symmetrical and imo more understandable,
    potentially this allows to change irq_fpu_usable() to avoid all other
    checks except "in_kernel_fpu".
    
    Also, with this patch __kernel_fpu_end() does restore_fpu_checking()
    and WARNs if it fails instead of math_state_restore(). I think this
    looks better because we no longer need __thread_fpu_begin(), and it
    would be better to report the failure in this case.
    Signed-off-by: NOleg Nesterov <oleg@redhat.com>
    Acked-by: NRik van Riel <riel@redhat.com>
    Cc: matt.fleming@intel.com
    Cc: bp@suse.de
    Cc: pbonzini@redhat.com
    Cc: luto@amacapital.net
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Suresh Siddha <sbsiddha@gmail.com>
    Link: http://lkml.kernel.org/r/20150115192005.GC27332@redhat.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
    33a3ebdc
i387.c 14.6 KB