• Max Filippov's avatar
    xtensa: add missing exclusive access state management · a0fc1436
    Max Filippov authored
    The result of the s32ex opcode is recorded in the ATOMCTL special
    register and must be retrieved with the getex opcode. Context switch
    between s32ex and getex may trash the ATOMCTL register and result in
    duplicate update or missing update of the atomic variable.
    Add atomctl8 field to the struct thread_info and use getex to swap
    ATOMCTL bit 8 as a part of context switch.
    Clear exclusive access monitor on kernel entry.
    
    Cc: stable@vger.kernel.org
    Fixes: f7c34874 ("xtensa: add exclusive atomics support")
    Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
    a0fc1436
thread_info.h 3.71 KB