lkml.org 
[lkml]   [2018]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 071/139] xtensa: fix coprocessor context offset definitions
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Max Filippov <jcmvbkbc@gmail.com>

    commit 03bc996af0cc71c7f30c384d8ce7260172423b34 upstream.

    Coprocessor context offsets are used by the assembly code that moves
    coprocessor context between the individual fields of the
    thread_info::xtregs_cp structure and coprocessor registers.
    This fixes coprocessor context clobbering on flushing and reloading
    during normal user code execution and user process debugging in the
    presence of more than one coprocessor in the core configuration.

    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/xtensa/kernel/asm-offsets.c | 16 ++++++++--------
    1 file changed, 8 insertions(+), 8 deletions(-)

    --- a/arch/xtensa/kernel/asm-offsets.c
    +++ b/arch/xtensa/kernel/asm-offsets.c
    @@ -94,14 +94,14 @@ int main(void)
    DEFINE(THREAD_SP, offsetof (struct task_struct, thread.sp));
    DEFINE(THREAD_CPENABLE, offsetof (struct thread_info, cpenable));
    #if XTENSA_HAVE_COPROCESSORS
    - DEFINE(THREAD_XTREGS_CP0, offsetof (struct thread_info, xtregs_cp));
    - DEFINE(THREAD_XTREGS_CP1, offsetof (struct thread_info, xtregs_cp));
    - DEFINE(THREAD_XTREGS_CP2, offsetof (struct thread_info, xtregs_cp));
    - DEFINE(THREAD_XTREGS_CP3, offsetof (struct thread_info, xtregs_cp));
    - DEFINE(THREAD_XTREGS_CP4, offsetof (struct thread_info, xtregs_cp));
    - DEFINE(THREAD_XTREGS_CP5, offsetof (struct thread_info, xtregs_cp));
    - DEFINE(THREAD_XTREGS_CP6, offsetof (struct thread_info, xtregs_cp));
    - DEFINE(THREAD_XTREGS_CP7, offsetof (struct thread_info, xtregs_cp));
    + DEFINE(THREAD_XTREGS_CP0, offsetof(struct thread_info, xtregs_cp.cp0));
    + DEFINE(THREAD_XTREGS_CP1, offsetof(struct thread_info, xtregs_cp.cp1));
    + DEFINE(THREAD_XTREGS_CP2, offsetof(struct thread_info, xtregs_cp.cp2));
    + DEFINE(THREAD_XTREGS_CP3, offsetof(struct thread_info, xtregs_cp.cp3));
    + DEFINE(THREAD_XTREGS_CP4, offsetof(struct thread_info, xtregs_cp.cp4));
    + DEFINE(THREAD_XTREGS_CP5, offsetof(struct thread_info, xtregs_cp.cp5));
    + DEFINE(THREAD_XTREGS_CP6, offsetof(struct thread_info, xtregs_cp.cp6));
    + DEFINE(THREAD_XTREGS_CP7, offsetof(struct thread_info, xtregs_cp.cp7));
    #endif
    DEFINE(THREAD_XTREGS_USER, offsetof (struct thread_info, xtregs_user));
    DEFINE(XTREGS_USER_SIZE, sizeof(xtregs_user_t));

    \
     
     \ /
      Last update: 2018-12-04 11:58    [W:2.283 / U:0.348 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site