The coming patches provide the ability for Rust allocators to set NUMA node and large alignment. Changelog: v2 -> v3: * fixed the build breakage for non-MMU configs v3 -> v4: * added NUMA node support for k[v]realloc (patch #2) * removed extra logic in Rust helpers * patch for Rust allocators split into 2 (align: patch #3 and NUMA ids: patch #4) v4 -> v5: * reworked NUMA node support for k[v]realloc for all 3 <alloc>_node functions to have the same signature * all 3 <alloc>_node slab/vmalloc functions now support alignment specification * Rust helpers are extended with new functions, the old ones are left intact * Rust support for NUMA nodes comes first now (as patch #3) v5 -> v6: * added <alloc>_node_align functions to keep the existing interfaces intact * clearer separation for Rust support of MUNA ids and large alignments v6 -> v7: * NUMA identifier as a new Rust type (NumaNode) * better documentation for changed and new functions and constants v7 -> v8: * removed NumaError * small cleanups per reviewers' comments v8 -> v9: * realloc functions can now reallocate memory for a different NUMA node * better comments/explanations in the Rust part v9 -> v10: * refined behavior when memory is being reallocated for a different NUMA node, comments added * cleanups in the Rust part, rustfmt ran * typos corrected v10 -> v11: * added documentation for the NO_NODE constant * added node parameter to Allocator's alloc/realloc instead of adding separate alloc_node resp. realloc_node functions, modified users of alloc/realloc in accordance with that v11 -> v12: * some redundant _noprof functions removed in patch 2/4 * c'n'p error fixed in patch 2/4 (vmalloc_to_page -> virt_to_page) * some typo corrections and documentation updates, primarily in patch 3/4 v12 -> v13: * fixed wording in comments (patches 1, 3) * fixed bigger alignment handling in krealloc (patch 2) * removed pr_warn import (patch 4) Signed-off-by: Vitaly Wool <vitaly.wool@xxxxxxxxxxx> -- fs/bcachefs/darray.c | 2 - fs/bcachefs/util.h | 2 - include/linux/bpfptr.h | 2 - include/linux/slab.h | 39 ++++++++++++++++++++++--------------- include/linux/vmalloc.h | 12 ++++++++--- lib/rhashtable.c | 4 +-- mm/nommu.c | 3 +- mm/slub.c | 64 +++++++++++++++++++++++++++++++++++++++++-------------------- mm/vmalloc.c | 29 ++++++++++++++++++++++----- rust/helpers/slab.c | 10 +++++---- rust/helpers/vmalloc.c | 5 ++-- rust/kernel/alloc.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++++----- rust/kernel/alloc/allocator.rs | 49 +++++++++++++++++++++------------------------- rust/kernel/alloc/kbox.rs | 4 +-- rust/kernel/alloc/kvec.rs | 11 ++++++++-- 15 files changed, 200 insertions(+), 90 deletions(-)