lkml.org 
[lkml]   [2018]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.17 176/336] arm64: cmpwait: Clear event register before arming exclusive monitor
    Date
    4.17-stable review patch.  If anyone has any objections, please let me know.

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

    From: Will Deacon <will.deacon@arm.com>

    [ Upstream commit 1cfc63b5ae60fe7e01773f38132f98d8b13a99a0 ]

    When waiting for a cacheline to change state in cmpwait, we may immediately
    wake-up the first time around the outer loop if the event register was
    already set (for example, because of the event stream).

    Avoid these spurious wakeups by explicitly clearing the event register
    before loading the cacheline and setting the exclusive monitor.

    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/arm64/include/asm/cmpxchg.h | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/arch/arm64/include/asm/cmpxchg.h
    +++ b/arch/arm64/include/asm/cmpxchg.h
    @@ -204,7 +204,9 @@ static inline void __cmpwait_case_##name
    unsigned long tmp; \
    \
    asm volatile( \
    - " ldxr" #sz "\t%" #w "[tmp], %[v]\n" \
    + " sevl\n" \
    + " wfe\n" \
    + " ldxr" #sz "\t%" #w "[tmp], %[v]\n" \
    " eor %" #w "[tmp], %" #w "[tmp], %" #w "[val]\n" \
    " cbnz %" #w "[tmp], 1f\n" \
    " wfe\n" \

    \
     
     \ /
      Last update: 2018-08-01 20:10    [W:4.068 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site