summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYogesh Lal <ylal@codeaurora.org>2020-11-09 08:52:33 +1100
committerStephen Rothwell <sfr@canb.auug.org.au>2020-11-09 08:52:33 +1100
commit66109d983f61ad9a224311639b5be7e484e3cdea (patch)
tree971f826f05062243fa1954976ed523cd10ec334c
parent4c71d070c02206d2ef62450cd1651f5ee04609b0 (diff)
downloadlinux-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/Kconfig9
-rw-r--r--lib/stackdepot.c3
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