lkml.org 
[lkml]   [2012]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH] arch/tile: use atomic exchange in arch_write_unlock()
    This idiom is used elsewhere when we do an unlock by writing a zero,
    but I missed it here. Using an atomic operation avoids waiting
    on the write buffer for the unlocking write to be sent to the home cache.

    Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
    ---
    arch/tile/include/asm/spinlock_64.h | 2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)

    diff --git a/arch/tile/include/asm/spinlock_64.h b/arch/tile/include/asm/spinlock_64.h
    index 72be590..5f8b6a0 100644
    --- a/arch/tile/include/asm/spinlock_64.h
    +++ b/arch/tile/include/asm/spinlock_64.h
    @@ -137,7 +137,7 @@ static inline void arch_read_unlock(arch_rwlock_t *rw)
    static inline void arch_write_unlock(arch_rwlock_t *rw)
    {
    __insn_mf();
    - rw->lock = 0;
    + __insn_exch4(&rw->lock, 0); /* Avoid waiting in the write buffer. */
    }

    static inline int arch_read_trylock(arch_rwlock_t *rw)
    --
    1.6.5.2


    \
     
     \ /
      Last update: 2012-03-31 00:53    [W:0.021 / U:91.428 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site