Message ID | 1629270943-9304-1-git-send-email-maninder1.s@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/1] exception/stackdepot: add irqentry section in case of STACKDEPOT | expand |
Hi, Any inputs on this? >As of now if CONFIG_FUNCTION_GRAPH_TRACER is disabled some functions >like gic_handle_irq will not be added in irqentry text section. > >which leads to adding more stacks in stackdepot as frames below IRQ >will not be filtered with filter_irq_stack() function. > >checked with debug interface for satckdepot: >https://lkml.org/lkml/2017/11/22/242 > >e.g. (ARM) >stack count 23188 backtrace > prep_new_page+0x14c/0x160 > get_page_from_freelist+0x1258/0x1350 >... > __handle_domain_irq+0x1ac/0x4ac > gic_handle_irq+0x44/0x80 > __irq_svc+0x5c/0x98 > __slab_alloc.constprop.0+0x84/0xac > __kmalloc+0x31c/0x340 > sf_malloc+0x14/0x18 > >and for same _irq_svc there were 25000 calls which was causing >memory pressure of 2MB more on satckdepot, which will keep increasing. > >Before patch memory consumption on ARM target after 2 hours: >Memory consumed by Stackdepot:3600 KB > >After change: >============ >Memory consumed by Stackdepot:1744 KB > > prep_new_page+0x14c/0x160 > get_page_from_freelist+0x2e4/0x1350 >... > __handle_domain_irq+0x1ac/0x4ac > gic_handle_irq+0x44/0x80 > >^^^^^ no frames below this. > >Signed-off-by: Maninder Singh <maninder1.s@samsung.com> >Signed-off-by: Vaneet Narang <v.narang@samsung.com> >--- > arch/arm/include/asm/exception.h | 2 +- > arch/arm64/include/asm/exception.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > >diff --git a/arch/arm/include/asm/exception.h b/arch/arm/include/asm/exception.h >index 58e039a851af..3f4534cccc0f 100644 >--- a/arch/arm/include/asm/exception.h >+++ b/arch/arm/include/asm/exception.h >@@ -10,7 +10,7 @@ > > #include <linux/interrupt.h> > >-#ifdef CONFIG_FUNCTION_GRAPH_TRACER >+#if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_STACKDEPOT) > #define __exception_irq_entry __irq_entry > #else > #define __exception_irq_entry >diff --git a/arch/arm64/include/asm/exception.h b/arch/arm64/include/asm/exception.h >index 339477dca551..ef2581b63405 100644 >--- a/arch/arm64/include/asm/exception.h >+++ b/arch/arm64/include/asm/exception.h >@@ -13,7 +13,7 @@ > > #include <linux/interrupt.h> > >-#ifdef CONFIG_FUNCTION_GRAPH_TRACER >+#if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_STACKDEPOT) > #define __exception_irq_entry __irq_entry > #else > #define __exception_irq_entry __kprobes >--
On Mon, Sep 06, 2021 at 06:13:51PM +0530, Maninder Singh wrote: > > Hi, > > Any inputs on this? No, I've not heard of stackdepot, I don't know what it is, or what it does. It doesn't appear to be documented in Documentation - case insensitive grep for "stackdepot" gets no hits. No help text on its Kconfig option. How are arch maintainers supposed to know anything about this?
Hi, >No, I've not heard of stackdepot, I don't know what it is, or what >it does. It doesn't appear to be documented in Documentation - case >insensitive grep for "stackdepot" gets no hits. No help text on its >Kconfig option. > >How are arch maintainers supposed to know anything about this? ok. Added reviewers/maintainers of stackdepot and KASAN(filter_irq_stack) code. Because on our ARM H/W it was causing memory issue, and without this change purpose of filter_irq_stack was gone as it was not filtering irq stacks. If anyone else has any views or comments for this. Thanks Maninder Singh
diff --git a/arch/arm/include/asm/exception.h b/arch/arm/include/asm/exception.h index 58e039a851af..3f4534cccc0f 100644 --- a/arch/arm/include/asm/exception.h +++ b/arch/arm/include/asm/exception.h @@ -10,7 +10,7 @@ #include <linux/interrupt.h> -#ifdef CONFIG_FUNCTION_GRAPH_TRACER +#if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_STACKDEPOT) #define __exception_irq_entry __irq_entry #else #define __exception_irq_entry diff --git a/arch/arm64/include/asm/exception.h b/arch/arm64/include/asm/exception.h index 339477dca551..ef2581b63405 100644 --- a/arch/arm64/include/asm/exception.h +++ b/arch/arm64/include/asm/exception.h @@ -13,7 +13,7 @@ #include <linux/interrupt.h> -#ifdef CONFIG_FUNCTION_GRAPH_TRACER +#if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_STACKDEPOT) #define __exception_irq_entry __irq_entry #else #define __exception_irq_entry __kprobes