mm, slub: use migrate_disable() on PREEMPT_RT
authorVlastimil Babka <vbabka@suse.cz>
Fri, 21 May 2021 12:03:23 +0000 (14:03 +0200)
committerVlastimil Babka <vbabka@suse.cz>
Sat, 4 Sep 2021 08:21:32 +0000 (10:21 +0200)
commit25c00c506e8176d03f9ad821cc349230dfb5dc1a
tree4942ab6bec74b8736658937c427378c65563c89d
parente0a043aa4145a14d6a8864847811491699a81310
mm, slub: use migrate_disable() on PREEMPT_RT

We currently use preempt_disable() (directly or via get_cpu_ptr()) to stabilize
the pointer to kmem_cache_cpu. On PREEMPT_RT this would be incompatible with
the list_lock spinlock. We can use migrate_disable() instead, but that
increases overhead on !PREEMPT_RT as it's an unconditional function call.

In order to get the best available mechanism on both PREEMPT_RT and
!PREEMPT_RT, introduce private slub_get_cpu_ptr() and slub_put_cpu_ptr()
wrappers and use them.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slub.c