Skip to content

Allow inlined spinlocks again V2

Heiko Carstens linux-arch 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest4 patches 4 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4spinlock: move spinlock function bodies to header fileinclude/linux/spinlock.h include/linux/spinlock_api_smp.h kernel/spinlock.c+300 -1550 replies
2/4spinlock: add macro to generate out-of-line variantskernel/spinlock.c+68 -1653 replies
3/4spinlock: allow inlined spinlocksinclude/linux/spinlock_api_smp.h kernel/spinlock.c lib/Kconfig.debug+53 -00 replies
4/4spinlock: allow inline spinlocks on s390arch/s390/Kconfig+1 -00 replies

Reviews trailers per patch

None of the 4 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchPeter Zijlstra
SeriesA-b
1/4
2/4
3/4
4/4

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [patch 0/4] Allow inlined spinlocks again V2

This patch set allows to have inlined spinlocks again.

V2: rewritten from scratch - now with readable code

The rationale behind this is that function calls on at least s390 are expensive.

If one considers that server kernels are usually compiled with !CONFIG_PREEMPT a simple spin_lock is just a compare and swap loop. The extra overhead for a function call is significant.
With inlined spinlocks overall cpu usage gets reduced by 1%-5% on s390. These numbers were taken with some network benchmarks. However I expect any workload that calls frequently into the kernel and which grabs a few locks to perform better.

The implementation is straight forward: move the function bodies of the locking functions to static inline functions and place them in a header file.
Dependent on CONFIG_SPINLOCK_INLINE generate out-of-line or inlined locking functions.

The patches should be self explaining.