]> Git Repo - linux.git/commit
mm: slub: move flush_cpu_slab() invocations __free_slab() invocations out of IRQ...
authorSebastian Andrzej Siewior <[email protected]>
Fri, 26 Feb 2021 16:11:55 +0000 (17:11 +0100)
committerVlastimil Babka <[email protected]>
Fri, 3 Sep 2021 23:12:23 +0000 (01:12 +0200)
commit5a836bf6b09f99ead1b69457ff39ab3011ece57b
tree959be42f69d765d7198b8c1d6c8aa1a3f3e54ec7
parent08beb547a1f7b66fbeaf40f2d3675a3ea0060c0b
mm: slub: move flush_cpu_slab() invocations __free_slab() invocations out of IRQ context

flush_all() flushes a specific SLAB cache on each CPU (where the cache
is present). The deactivate_slab()/__free_slab() invocation happens
within IPI handler and is problematic for PREEMPT_RT.

The flush operation is not a frequent operation or a hot path. The
per-CPU flush operation can be moved to within a workqueue.

Because a workqueue handler, unlike IPI handler, does not disable irqs,
flush_slab() now has to disable them for working with the kmem_cache_cpu
fields. deactivate_slab() is safe to call with irqs enabled.

[[email protected]: adapt to new SLUB changes]
Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Signed-off-by: Vlastimil Babka <[email protected]>
mm/slab_common.c
mm/slub.c
This page took 0.05396 seconds and 4 git commands to generate.