• Suresh Siddha's avatar
    x86, fpu: always use kernel_fpu_begin/end() for in-kernel FPU usage · 841e3604
    Suresh Siddha authored
    use kernel_fpu_begin/end() instead of unconditionally accessing cr0 and
    saving/restoring just the few used xmm/ymm registers.
    
    This has some advantages like:
    * If the task's FPU state is already active, then kernel_fpu_begin()
      will just save the user-state and avoiding the read/write of cr0.
      In general, cr0 accesses are much slower.
    
    * Manual save/restore of xmm/ymm registers will affect the 'modified' and
      the 'init' optimizations brought in the by xsaveopt/xrstor
      infrastructure.
    
    * Foward compatibility with future vector register extensions will be a
      problem if the xmm/ymm registers are manually saved and restored
      (corrupting the extended state of those vector registers).
    
    With this patch, there was no significant difference in the xor throughput
    using AVX, measured during boot.
    Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
    Link: http://lkml.kernel.org/r/1345842782-24175-5-git-send-email-suresh.b.siddha@intel.com
    Cc: Jim Kukunas <james.t.kukunas@linux.intel.com>
    Cc: NeilBrown <neilb@suse.de>
    Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
    841e3604
xor_32.h 20.3 KB