linux/arch/arc
Vineet Gupta ae7eae9e03 ARC: LLOCK/SCOND based spin_lock
Current spin_lock uses EXchange instruction to implement the atomic test
and set of lock location (reads orig value and ST 1). This however forces
the cacheline into exclusive state (because of the ST) and concurrent
loops in multiple cores will bounce the line around between cores.

Instead, use LLOCK/SCOND to implement the atomic test and set which is
better as line is in shared state while lock is spinning on LLOCK

The real motivation of this change however is to make way for future
changes in atomics to implement delayed retry (with backoff).
Initial experiment with delayed retry in atomics combined with orig
EX based spinlock was a total disaster (broke even LMBench) as
struct sock has a cache line sharing an atomic_t and spinlock. The
tight spinning on lock, caused the atomic retry to keep backing off
such that it would never finish.

Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
2015-08-04 09:26:33 +05:30
..
boot ARCv2: [axs103] bump CPU frequency from 75 to 90 MHZ 2015-07-09 17:36:31 +05:30
configs ARCv2: [vdk] dts files and defconfig for HS38 VDK 2015-06-25 06:00:21 +05:30
include ARC: LLOCK/SCOND based spin_lock 2015-08-04 09:26:33 +05:30
kernel ARCv2: Fix the peripheral address space detection 2015-08-03 19:34:07 +05:30
lib ARCv2: lib: memset: Don't assume 64-bit load/stores 2015-07-20 17:44:37 +03:00
mm ARC: Don't memzero twice in dma_alloc_coherent for __GFP_ZERO 2015-07-06 11:09:01 +05:30
oprofile ARC: OProfile support 2013-02-15 23:16:00 +05:30
plat-axs10x ARCv2: [axs103_smp] Reduce clk for Quad FPGA configs 2015-08-04 09:26:30 +05:30
plat-sim ARCv2: [nsim*hs*] Support simulation platforms for HS38x cores 2015-06-25 06:00:19 +05:30
plat-tb10x ARC: [plat*] move code out of .init_machine into common 2014-10-13 14:46:13 +05:30
Kbuild ARC: Build system: Makefiles, Kconfig, Linker script 2013-02-11 20:00:25 +05:30
Kconfig ARCv2: allow selection of page size for MMUv4 2015-07-23 12:04:39 +03:00
Kconfig.debug ARC: With earlycon in use, retire EARLY_PRINTK 2015-05-11 11:20:21 +05:30
Makefile ARCv2: add knob for DIV_REV in Kconfig 2015-07-20 13:33:30 +03:00