diff mbox series

[1/1] exception/stackdepot: add irqentry section in case of STACKDEPOT

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

Commit Message

Maninder Singh Aug. 18, 2021, 7:15 a.m. UTC
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(-)

Comments

Maninder Singh Sept. 6, 2021, 12:43 p.m. UTC | #1
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
>--
Russell King (Oracle) Sept. 6, 2021, 12:57 p.m. UTC | #2
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?
Maninder Singh Sept. 10, 2021, 12:59 p.m. UTC | #3
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 mbox series

Patch

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