lkml.org 
[lkml]   [2017]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/fpu] x86/fpu: Fix stale comments about lazy FPU logic
    Commit-ID:  7f1487c59b7c6dcb20155f4302985da2659a2997
    Gitweb: http://git.kernel.org/tip/7f1487c59b7c6dcb20155f4302985da2659a2997
    Author: Ingo Molnar <mingo@kernel.org>
    AuthorDate: Sat, 23 Sep 2017 15:00:13 +0200
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Tue, 26 Sep 2017 09:43:43 +0200

    x86/fpu: Fix stale comments about lazy FPU logic

    We don't do any lazy restore anymore, what we have are two pieces of optimization:

    - no-FPU tasks that don't save/restore the FPU context (kernel threads are such)

    - cached FPU registers maintained via the fpu->last_cpu field. This means that
    if an FPU task context switches to a non-FPU task then we can maintain the
    FPU registers as an in-FPU copies (cache), and skip the restoration of them
    once we switch back to the original FPU-using task.

    Update all the comments that still referred to old 'lazy' and 'unlazy' concepts.

    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Eric Biggers <ebiggers3@gmail.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yu-cheng Yu <yu-cheng.yu@intel.com>
    Link: http://lkml.kernel.org/r/20170923130016.21448-31-mingo@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    arch/x86/kernel/fpu/core.c | 9 +++------
    1 file changed, 3 insertions(+), 6 deletions(-)

    diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
    index c8d6032..77668d9 100644
    --- a/arch/x86/kernel/fpu/core.c
    +++ b/arch/x86/kernel/fpu/core.c
    @@ -205,9 +205,6 @@ int fpu__copy(struct fpu *dst_fpu, struct fpu *src_fpu)
    /*
    * Save current FPU registers directly into the child
    * FPU context, without any memory-to-memory copying.
    - * In lazy mode, if the FPU context isn't loaded into
    - * fpregs, CR0.TS will be set and do_device_not_available
    - * will load the FPU context.
    *
    * We have to do all this with preemption disabled,
    * mostly because of the FNSAVE case, because in that
    @@ -285,13 +282,13 @@ void fpu__activate_fpstate_read(struct fpu *fpu)
    /*
    * This function must be called before we write a task's fpstate.
    *
    - * If the task has used the FPU before then unlazy it.
    + * If the task has used the FPU before then invalidate any cached FPU registers.
    * If the task has not used the FPU before then initialize its fpstate.
    *
    * After this function call, after registers in the fpstate are
    * modified and the child task has woken up, the child task will
    * restore the modified FPU state from the modified context. If we
    - * didn't clear its lazy status here then the lazy in-registers
    + * didn't clear its cached status here then the cached in-registers
    * state pending on its former CPU could be restored, corrupting
    * the modifications.
    */
    @@ -304,7 +301,7 @@ void fpu__activate_fpstate_write(struct fpu *fpu)
    WARN_ON_FPU(fpu == &current->thread.fpu);

    if (fpu->initialized) {
    - /* Invalidate any lazy state: */
    + /* Invalidate any cached state: */
    __fpu_invalidate_fpregs_state(fpu);
    } else {
    fpstate_init(&fpu->state);
    \
     
     \ /
      Last update: 2017-09-26 10:42    [W:4.176 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site