diff options
author | Yogesh Lal <ylal@codeaurora.org> | 2020-11-09 08:52:33 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2020-11-09 08:52:33 +1100 |
commit | 66109d983f61ad9a224311639b5be7e484e3cdea (patch) | |
tree | 971f826f05062243fa1954976ed523cd10ec334c | |
parent | 4c71d070c02206d2ef62450cd1651f5ee04609b0 (diff) | |
download | linux-66109d983f61ad9a224311639b5be7e484e3cdea.tar.gz linux-66109d983f61ad9a224311639b5be7e484e3cdea.tar.xz |
lib: stackdepot: add support to configure STACK_HASH_SIZE
Use STACK_HASH_ORDER_SHIFT to configure STACK_HASH_SIZE.
Aim is to have configurable value for STACK_HASH_SIZE,
so depend on use case one can configure it.
One example is of Page Owner, default value of
STACK_HASH_SIZE lead stack depot to consume 8MB of static memory.
Making it configurable and use lower value helps to enable features like
CONFIG_PAGE_OWNER without any significant overhead.
Link: https://lkml.kernel.org/r/1603372546-27118-1-git-send-email-vjitta@codeaurora.org
Signed-off-by: Yogesh Lal <ylal@codeaurora.org>
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
Signed-off-by: Vijayanand Jitta <vjitta@codeaurora.org>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
-rw-r--r-- | lib/Kconfig | 9 | ||||
-rw-r--r-- | lib/stackdepot.c | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/Kconfig b/lib/Kconfig index b46a9fd122c8..d2efa8ba47db 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -651,6 +651,15 @@ config STACKDEPOT bool select STACKTRACE +config STACK_HASH_ORDER_SHIFT + int "stack depot hash size (12 => 4KB, 20 => 1024KB)" + range 12 20 + default 20 + depends on STACKDEPOT + help + Select the hash size as a power of 2 for the stackdepot hash table. + Choose a lower value to reduce the memory impact. + config SBITMAP bool diff --git a/lib/stackdepot.c b/lib/stackdepot.c index 2caffc64e4c8..413c20ba0358 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -142,8 +142,7 @@ static struct stack_record *depot_alloc_stack(unsigned long *entries, int size, return stack; } -#define STACK_HASH_ORDER 20 -#define STACK_HASH_SIZE (1L << STACK_HASH_ORDER) +#define STACK_HASH_SIZE (1L << CONFIG_STACK_HASH_ORDER_SHIFT) #define STACK_HASH_MASK (STACK_HASH_SIZE - 1) #define STACK_HASH_SEED 0x9747b28c |