[GIT PULL] slab updates for 6.9

From: Vlastimil Babka
Date: Tue Mar 12 2024 - 05:55:48 EST


Hi Linus,

please pull the latest slab updates from:

git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git tags/slab-for-6.9

I'm not aware of any merge conflicts this time.

Thanks,
Vlastimil

======================================

- Freelist loading optimization (Chengming Zhou)

When the per-cpu slab is depleted and a new one loaded from the cpu partial
list, optimize the loading to avoid an irq enable/disable cycle. This results
in a 3.5% performance improvement on the "perf bench sched messaging" test.

- Kernel boot parameters cleanup after SLAB removal (Xiongwei Song)

Due to two different main slab implementations we've had boot parameters
prefixed either slab_ and slub_ with some later becoming an alias as both
implementations gained the same functionality (i.e. slab_nomerge vs
slub_nomerge). In order to eventually get rid of the implementation-specific
names, the canonical and documented parameters are now all prefixed slab_
and the slub_ variants become deprecated but still working aliases.

- SLAB_ kmem_cache creation flags cleanup (Vlastimil Babka)

The flags had hardcoded #define values which became tedious and error-prone
when adding new ones. Assign the values via an enum that takes care of
providing unique bit numbers. Also deprecate SLAB_MEM_SPREAD which was only
used by SLAB, so it's a no-op since SLAB removal. Assign it an explicit zero
value. The removals of the flag usage are handled independently in the
respective subsystems, with a final removal of any leftover usage planned
for the next release.

- Misc cleanups and fixes (Chengming Zhou, Xiaolei Wang, Zheng Yejian)

Includes removal of unused code or function parameters and a fix of a
memleak.

----------------------------------------------------------------
Chengming Zhou (7):
mm/slub: directly load freelist from cpu partial slab in the likely case
mm/slub: remove full list manipulation for non-debug slab
mm/slub: remove unused parameter in next_freelist_entry()
mm, slab: remove unused object_size parameter in kmem_cache_flags()
mm, slab: fix the comment of cpu partial list
mm, slab: remove the corner case of inc_slabs_node()
slab: remove PARTIAL_NODE slab_state

Vlastimil Babka (6):
mm, slab: deprecate SLAB_MEM_SPREAD flag
mm, slab: use an enum to define SLAB_ cache creation flags
mm, slab, kasan: replace kasan_never_merge() with SLAB_NO_MERGE
mm, slab: remove memcg_from_slab_obj()
Merge branch 'slab/for-6.9/optimize-get-freelist' into slab/for-linus
Merge branch 'slab/for-6.9/slab-flag-cleanups' into slab/for-linus

Xiaolei Wang (1):
mm/slab: Fix a kmemleak in kmem_cache_destroy()

Xiongwei Song (4):
Documentation: kernel-parameters: remove noaliencache
mm/slub: unify all sl[au]b parameters with "slab_$param"
mm/slub: replace slub_$params with slab_$params in slub.rst
mm/slub: make the description of slab_min_objects helpful in doc

Zheng Yejian (1):
mm/slub: remove parameter 'flags' in create_kmalloc_caches()

Documentation/admin-guide/kernel-parameters.txt | 75 +++++++--------
Documentation/mm/slub.rst | 60 ++++++------
drivers/misc/lkdtm/heap.c | 2 +-
include/linux/kasan.h | 6 --
include/linux/slab.h | 97 ++++++++++++++------
mm/Kconfig.debug | 6 +-
mm/kasan/generic.c | 22 ++---
mm/slab.h | 11 +--
mm/slab_common.c | 29 +++---
mm/slub.c | 116 ++++++++++--------------
tools/include/linux/slab.h | 1 -
11 files changed, 210 insertions(+), 215 deletions(-)