lkml.org 
[lkml]   [2020]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 444/464] Revert "parisc: Revert "Release spinlocks using ordered store""
    Date
    From: Helge Deller <deller@gmx.de>

    commit 157e9afcc4fa25068b0e8743bc254a9b56010e13 upstream.

    This reverts commit 86d4d068df573a8c2105554624796c086d6bec3d.

    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org> # v5.0+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/parisc/include/asm/spinlock.h | 4 ++--
    arch/parisc/kernel/syscall.S | 12 ++++--------
    2 files changed, 6 insertions(+), 10 deletions(-)

    --- a/arch/parisc/include/asm/spinlock.h
    +++ b/arch/parisc/include/asm/spinlock.h
    @@ -37,8 +37,8 @@ static inline void arch_spin_unlock(arch
    volatile unsigned int *a;

    a = __ldcw_align(x);
    - mb();
    - *a = 1;
    + /* Release with ordered store. */
    + __asm__ __volatile__("stw,ma %0,0(%1)" : : "r"(1), "r"(a) : "memory");
    }

    static inline int arch_spin_trylock(arch_spinlock_t *x)
    --- a/arch/parisc/kernel/syscall.S
    +++ b/arch/parisc/kernel/syscall.S
    @@ -640,8 +640,7 @@ cas_action:
    sub,<> %r28, %r25, %r0
    2: stw %r24, 0(%r26)
    /* Free lock */
    - sync
    - stw %r20, 0(%sr2,%r20)
    + stw,ma %r20, 0(%sr2,%r20)
    #if ENABLE_LWS_DEBUG
    /* Clear thread register indicator */
    stw %r0, 4(%sr2,%r20)
    @@ -655,8 +654,7 @@ cas_action:
    3:
    /* Error occurred on load or store */
    /* Free lock */
    - sync
    - stw %r20, 0(%sr2,%r20)
    + stw,ma %r20, 0(%sr2,%r20)
    #if ENABLE_LWS_DEBUG
    stw %r0, 4(%sr2,%r20)
    #endif
    @@ -857,8 +855,7 @@ cas2_action:

    cas2_end:
    /* Free lock */
    - sync
    - stw %r20, 0(%sr2,%r20)
    + stw,ma %r20, 0(%sr2,%r20)
    /* Enable interrupts */
    ssm PSW_SM_I, %r0
    /* Return to userspace, set no error */
    @@ -868,8 +865,7 @@ cas2_end:
    22:
    /* Error occurred on load or store */
    /* Free lock */
    - sync
    - stw %r20, 0(%sr2,%r20)
    + stw,ma %r20, 0(%sr2,%r20)
    ssm PSW_SM_I, %r0
    ldo 1(%r0),%r28
    b lws_exit

    \
     
     \ /
      Last update: 2020-08-17 21:16    [W:3.827 / U:0.460 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site