]> www.infradead.org Git - users/jedix/linux-maple.git/commit
mm/vmalloc: use __this_cpu_try_cmpxchg() in preload_this_cpu_lock()
authorUros Bizjak <ubizjak@gmail.com>
Tue, 28 May 2024 14:43:14 +0000 (16:43 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 4 Jul 2024 02:30:02 +0000 (19:30 -0700)
commitf56810c94ca828ab5c223a3528cc44c823cace16
tree12e21d9706b1c8882425c2e17ab83e300f4aa93c
parent21664442be1bf79094dd9d21b8833acbfbd80ea7
mm/vmalloc: use __this_cpu_try_cmpxchg() in preload_this_cpu_lock()

Use __this_cpu_try_cmpxchg() instead of __this_cpu_cmpxchg (*ptr, old,
new) == old in preload_this_cpu_lock().  x86 CMPXCHG instruction returns
success in ZF flag, so this change saves a compare after cmpxchg.

The generated code improves from:

    4bb6: 48 85 f6              test   %rsi,%rsi
    4bb9: 0f 84 10 fa ff ff     je     45cf <...>
    4bbf: 4c 89 e8              mov    %r13,%rax
    4bc2: 65 48 0f b1 35 00 00  cmpxchg %rsi,%gs:0x0(%rip)
    4bc9: 00 00
    4bcb: 48 85 c0              test   %rax,%rax
    4bce: 0f 84 fb f9 ff ff     je     45cf <...>

to:

    4bb6: 48 85 f6              test   %rsi,%rsi
    4bb9: 0f 84 10 fa ff ff     je     45cf <...>
    4bbf: 4c 89 e8              mov    %r13,%rax
    4bc2: 65 48 0f b1 35 00 00  cmpxchg %rsi,%gs:0x0(%rip)
    4bc9: 00 00
    4bcb: 0f 84 fe f9 ff ff     je     45cf <...>

No functional change intended.

Link: https://lkml.kernel.org/r/20240528144345.5980-2-ubizjak@gmail.com
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Lorenzo Stoakes <lstoakes@gmail.com>
Cc: Dennis Zhou <dennis@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Christoph Lameter <cl@linux.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmalloc.c