Message ID | 20250312151634.2183278-20-bigeasy@linutronix.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | None | expand |
On Wed, 12 Mar 2025 16:16:32 +0100 Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote: > From: Peter Zijlstra <peterz@infradead.org> > > To enable node specific hash-tables. "... using huge pages if possible"? > --- 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)); > +} > + kerneldoc please? I suppose we can now simplify vmalloc_huge_noprof() to use this: static inline void *vmalloc_huge_noprof(unsigned long size, gfp_t gfp_mask) { return vmalloc_huge_node_noprof(size, gfp_mask, NUMA_NO_NODE); }
On 2025-03-12 15:02:06 [-0700], Andrew Morton wrote: > On Wed, 12 Mar 2025 16:16:32 +0100 Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote: > > > From: Peter Zijlstra <peterz@infradead.org> > > > > To enable node specific hash-tables. > > "... using huge pages if possible"? > > > --- 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)); > > +} > > + > > kerneldoc please? Okay. > > I suppose we can now simplify vmalloc_huge_noprof() to use this: > > static inline void *vmalloc_huge_noprof(unsigned long size, gfp_t gfp_mask) > { > return vmalloc_huge_node_noprof(size, gfp_mask, NUMA_NO_NODE); > } Do you want me to stash this into this one or as a follow up? Sebastian
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