Messages in this thread | | | Date | Thu, 21 Jan 2021 16:25:40 -0800 | From | Minchan Kim <> | Subject | Re: [PATCH v5 2/2] lib: stackdepot: Add support to disable stack depot |
| |
On Mon, Jan 18, 2021 at 03:26:42PM +0530, vjitta@codeaurora.org wrote: > From: Vijayanand Jitta <vjitta@codeaurora.org> > > Add a kernel parameter stack_depot_disable to disable > stack depot. So that stack hash table doesn't consume > any memory when stack depot is disabled.
The usecase is CONFIG_PAGE_OWNER without page_owner=on. Without this patch, stackdepot will consume the memory for the hashtable. By default, it's 8M which is never trivial.
With this option, in CONFIG_PAGE_OWNER configured system, page_owner=off, stack_depot_disable in kernel command line, we could save the wasted memory for the hashtable.
> > Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org> > Signed-off-by: Vijayanand Jitta <vjitta@codeaurora.org>
Please also update kernel-parameters.txt.
> --- > include/linux/stackdepot.h | 1 + > init/main.c | 2 ++ > lib/stackdepot.c | 33 +++++++++++++++++++++++++++++---- > 3 files changed, 32 insertions(+), 4 deletions(-) > > diff --git a/include/linux/stackdepot.h b/include/linux/stackdepot.h > index 24d49c7..eafd9aa 100644 > --- a/include/linux/stackdepot.h > +++ b/include/linux/stackdepot.h > @@ -21,4 +21,5 @@ unsigned int stack_depot_fetch(depot_stack_handle_t handle, > > unsigned int filter_irq_stacks(unsigned long *entries, unsigned int nr_entries); > > +int stack_depot_init(void); > #endif > diff --git a/init/main.c b/init/main.c > index 32b2a8a..8fcf9bb 100644 > --- a/init/main.c > +++ b/init/main.c > @@ -98,6 +98,7 @@ > #include <linux/mem_encrypt.h> > #include <linux/kcsan.h> > #include <linux/init_syscalls.h> > +#include <linux/stackdepot.h> > > #include <asm/io.h> > #include <asm/bugs.h> > @@ -827,6 +828,7 @@ static void __init mm_init(void) > page_ext_init_flatmem(); > init_debug_pagealloc(); > report_meminit(); > + stack_depot_init(); > mem_init(); > kmem_cache_init(); > kmemleak_init(); > diff --git a/lib/stackdepot.c b/lib/stackdepot.c > index dff8521..d20e6fd 100644 > --- a/lib/stackdepot.c > +++ b/lib/stackdepot.c > @@ -31,6 +31,8 @@ > #include <linux/stackdepot.h> > #include <linux/string.h> > #include <linux/types.h> > +#include <linux/vmalloc.h>
Why do we need vmalloc?
Otherwise, looks good to me. Thank you!
| |