]> git.baikalelectronics.ru Git - kernel.git/commit
ARCv2: spinlock/rwlock/atomics: Delayed retry of failed SCOND with exponential backoff
authorVineet Gupta <vgupta@synopsys.com>
Tue, 14 Jul 2015 14:20:18 +0000 (19:50 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Tue, 4 Aug 2015 03:56:34 +0000 (09:26 +0530)
commit0b25c251be0417d94bff2425f32c53521f14ed71
treee16fad7f1d73a651d2f02deefd8f20f5bf9a018e
parent5dc221b4f9fc9fec58757054ccc9f6f05499106e
ARCv2: spinlock/rwlock/atomics: Delayed retry of failed SCOND with exponential backoff

This is to workaround the llock/scond livelock

HS38x4 could get into a LLOCK/SCOND livelock in case of multiple overlapping
coherency transactions in the SCU. The exclusive line state keeps rotating
among contenting cores leading to a never ending cycle. So break the cycle
by deferring the retry of failed exclusive access (SCOND). The actual delay
needed is function of number of contending cores as well as the unrelated
coherency traffic from other cores. To keep the code simple, start off with
small delay of 1 which would suffice most cases and in case of contention
double the delay. Eventually the delay is sufficient such that the coherency
pipeline is drained, thus a subsequent exclusive access would succeed.

Link: http://lkml.kernel.org/r/1438612568-28265-1-git-send-email-vgupta@synopsys.com
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/Kconfig
arch/arc/include/asm/atomic.h
arch/arc/include/asm/spinlock.h
arch/arc/kernel/setup.c