From: Peter Zijlstra <peterz@xxxxxxxxxxxxx> To enable node specific hash-tables. [bigeasy: use __vmalloc_node_range_noprof(), add nommu bits] Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Uladzislau Rezki <urezki@xxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx> Cc: linux-mm@xxxxxxxxx Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> --- include/linux/vmalloc.h | 3 +++ mm/nommu.c | 5 +++++ mm/vmalloc.c | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index 31e9ffd936e39..09c3e3e33f1f8 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -171,6 +171,9 @@ void *__vmalloc_node_noprof(unsigned long size, unsigned long align, gfp_t gfp_m void *vmalloc_huge_noprof(unsigned long size, gfp_t gfp_mask) __alloc_size(1); #define vmalloc_huge(...) alloc_hooks(vmalloc_huge_noprof(__VA_ARGS__)) +void *vmalloc_huge_node_noprof(unsigned long size, gfp_t gfp_mask, int node) __alloc_size(1); +#define vmalloc_huge_node(...) alloc_hooks(vmalloc_huge_node_noprof(__VA_ARGS__)) + extern void *__vmalloc_array_noprof(size_t n, size_t size, gfp_t flags) __alloc_size(1, 2); #define __vmalloc_array(...) alloc_hooks(__vmalloc_array_noprof(__VA_ARGS__)) diff --git a/mm/nommu.c b/mm/nommu.c index baa79abdaf037..d04e601a8f4d7 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -209,6 +209,11 @@ EXPORT_SYMBOL(vmalloc_noprof); void *vmalloc_huge_noprof(unsigned long size, gfp_t gfp_mask) __weak __alias(__vmalloc_noprof); +void *vmalloc_huge_node_noprof(unsigned long size, gfp_t gfp_mask, int node) +{ + return vmalloc_huge_noprof(size, gfp_mask); +} + /* * vzalloc - allocate virtually contiguous memory with zero fill * diff --git a/mm/vmalloc.c b/mm/vmalloc.c index a6e7acebe9adf..69247b46413ca 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3966,6 +3966,13 @@ void *vmalloc_huge_noprof(unsigned long size, gfp_t gfp_mask) } EXPORT_SYMBOL_GPL(vmalloc_huge_noprof); +void *vmalloc_huge_node_noprof(unsigned long size, gfp_t gfp_mask, int node) +{ + return __vmalloc_node_range_noprof(size, 1, VMALLOC_START, VMALLOC_END, + gfp_mask, PAGE_KERNEL, VM_ALLOW_HUGE_VMAP, + node, __builtin_return_address(0)); +} + /** * vzalloc - allocate virtually contiguous memory with zero fill * @size: allocation size -- 2.47.2