lkml.org 
[lkml]   [2011]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/9] rework of extended state handling, LWP support
    Date
    This patch set is a general cleanup and rework of the code related to
    handling of FPU and other extended states. All handling of extended
    states, including the FPU state, is now handled by xsave/xrstor wrappers
    that fall back to fxsave/fxrstor, or even fsave/frstor, if hardware
    support for those features is lacking. The code handling xstates in
    signal frames has been unified and cleaned up.

    The lazy allocation of the xstate area has been removed. The support for
    extended states that cannot be saved/restored lazily, like AMD's LWP,
    need this. Since optimized library functions using SSE etc. are widely
    used today, most processes would have an xstate area anyway, making the
    memory overhead negligible.


    Changes since the last RFC:
    * added patch to catch #NM exceptions caused by the kernel
    * reordered the patches in a way that seemed more logical, with the
    side-effect of reducing the size of some of the patches
    * two bugfixes in the preallocation of the xstate area
    * explicitly disable LWP in new tasks (required by the LWP spec)


    These patches were built and tested against 3.1. The older RFC patches
    that have been lingering in tip/x86/xsave for the last few months should
    be removed.


    Hans Rosenfeld (9):
    x86, xsave: warn on #NM exceptions caused by the kernel
    x86, xsave: cleanup fpu/xsave support
    x86, xsave: cleanup fpu/xsave signal frame setup
    x86, xsave: rework fpu/xsave support
    x86, xsave: remove unused code
    x86, xsave: more cleanups
    x86, xsave: remove lazy allocation of xstate area
    x86, xsave: add support for non-lazy xstates
    x86, xsave: add kernel support for AMDs Lightweight Profiling (LWP)

    arch/x86/ia32/ia32_signal.c | 4 +-
    arch/x86/include/asm/i387.h | 251 ++++++++--------------------
    arch/x86/include/asm/msr-index.h | 1 +
    arch/x86/include/asm/processor.h | 12 ++
    arch/x86/include/asm/sigcontext.h | 12 ++
    arch/x86/include/asm/thread_info.h | 6 +-
    arch/x86/include/asm/xsave.h | 102 +++--------
    arch/x86/kernel/i387.c | 300 +++------------------------------
    arch/x86/kernel/process.c | 14 ++
    arch/x86/kernel/process_32.c | 29 +---
    arch/x86/kernel/process_64.c | 28 +---
    arch/x86/kernel/signal.c | 4 +-
    arch/x86/kernel/traps.c | 48 +-----
    arch/x86/kernel/xsave.c | 325 +++++++++++++++++++++++------------
    arch/x86/kvm/vmx.c | 2 +-
    arch/x86/kvm/x86.c | 11 +-
    arch/x86/math-emu/fpu_entry.c | 8 +-
    drivers/lguest/x86/core.c | 2 +-
    fs/exec.c | 8 +
    19 files changed, 423 insertions(+), 744 deletions(-)

    --
    1.7.5.4




    \
     
     \ /
      Last update: 2011-11-29 13:45    [W:0.048 / U:150.116 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site