ACK / APPLIED[C]: [SRU][Bionic][PATCH 1/1] powerpc/powernv: Fix concurrency issue with npu->mmio_atsd_usage

Seth Forshee seth.forshee at
Fri Aug 31 13:23:03 UTC 2018

On Thu, Aug 30, 2018 at 03:44:44PM -0400, Khalid Elmously wrote:
> From: Reza Arbab <arbab at>
> BugLink:
> We've encountered a performance issue when multiple processors stress
> {get,put}_mmio_atsd_reg(). These functions contend for
> mmio_atsd_usage, an unsigned long used as a bitmask.
> The accesses to mmio_atsd_usage are done using test_and_set_bit_lock()
> and clear_bit_unlock(). As implemented, both of these will require
> a (successful) stwcx to that same cache line.
> What we end up with is thread A, attempting to unlock, being slowed by
> other threads repeatedly attempting to lock. A's stwcx instructions
> fail and retry because the memory reservation is lost every time a
> different thread beats it to the punch.
> There may be a long-term way to fix this at a larger scale, but for
> now resolve the immediate problem by gating our call to
> test_and_set_bit_lock() with one to test_bit(), which is obviously
> implemented without using a store.
> Fixes: 1ab66d1fbada ("powerpc/powernv: Introduce address translation services for Nvlink2")
> Signed-off-by: Reza Arbab <arbab at>
> Acked-by: Alistair Popple <alistair at>
> Signed-off-by: Michael Ellerman <mpe at>
> (cherry-picked from 9eab9901b015f489199105c470de1ffc337cfabb)
> Signed-off-by: Khalid Elmously <khalid.elmously at>

Acked-by: Seth Forshee <seth.forshee at>

Applied to cosmic/master-next, thanks!

More information about the kernel-team mailing list