]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
s390/preempt: Optimize __preemp_count_add()/__preempt_count_sub()
authorHeiko Carstens <hca@linux.ibm.com>
Tue, 13 Jan 2026 19:43:58 +0000 (20:43 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Sat, 17 Jan 2026 14:52:49 +0000 (15:52 +0100)
commit23ba7d31633da6b0706b4154e4eb74cdfab710ef
tree9e43697551545e4bdad6a207b9bf02f38bdf88ba
parent6cce3609a1e0dedeef9b4bfdc87d0d4692f691d7
s390/preempt: Optimize __preemp_count_add()/__preempt_count_sub()

Provide an inline assembly using alternatives to avoid the need of a
base register due to relocatable lowcore when adding or subtracting
small constants from preempt_count.

Main user is preempt_disable(), which subtracts one from
preempt_count. With this the generated code changes from

  10012c:       a7 b9 00 00             lghi    %r11,0
  100130:       eb 01 b3 a8 00 6a       asi     936(%r11),1

to something like this:

 10012c:        eb 01 03 a8 00 6a       asi     936,1

Kernel image size is reduced by 13kb (bloat-o-meter -t, defconfig, gcc15).

Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/preempt.h