* [PATCH v3 0/2] xtensa: improve stack dumping
@ 2019-11-12 22:44 Max Filippov
2019-11-12 22:44 ` [PATCH v3 1/2] " Max Filippov
2019-11-12 22:44 ` [PATCH v3 2/2] xtensa: make stack dump size configurable Max Filippov
0 siblings, 2 replies; 3+ messages in thread
From: Max Filippov @ 2019-11-12 22:44 UTC (permalink / raw)
To: linux-xtensa
Cc: Chris Zankel, linux-kernel, Dmitry Safonov, Petr Mladek,
Joe Perches, Max Filippov
Hello,
this series cleans up code around stack_dump and makes dump size
configurable.
Changes v2->v3:
- split Kconfig change into separate patch
- use symbolic names instead of hardcoded numbers
Changes v1->v2:
- use print_hex_dump.
Max Filippov (2):
xtensa: improve stack dumping
xtensa: make stack dump size configurable
arch/xtensa/Kconfig.debug | 7 +++++++
arch/xtensa/kernel/traps.c | 27 +++++++++++----------------
2 files changed, 18 insertions(+), 16 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v3 1/2] xtensa: improve stack dumping
2019-11-12 22:44 [PATCH v3 0/2] xtensa: improve stack dumping Max Filippov
@ 2019-11-12 22:44 ` Max Filippov
2019-11-12 22:44 ` [PATCH v3 2/2] xtensa: make stack dump size configurable Max Filippov
1 sibling, 0 replies; 3+ messages in thread
From: Max Filippov @ 2019-11-12 22:44 UTC (permalink / raw)
To: linux-xtensa
Cc: Chris Zankel, linux-kernel, Dmitry Safonov, Petr Mladek,
Joe Perches, Max Filippov
Calculate printable stack size and use print_hex_dump instead of
opencoding it.
Drop extra newline output in show_trace as its output format does not
depend on CONFIG_KALLSYMS.
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
Changes v2->v3:
- split Kconfig change into separate patch
- use symbolic names instead of hardcoded numbers
Changes v1->v2:
- use print_hex_dump.
arch/xtensa/kernel/traps.c | 27 +++++++++++----------------
1 file changed, 11 insertions(+), 16 deletions(-)
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c
index 4a6c495ce9b6..be26ec6c0e0e 100644
--- a/arch/xtensa/kernel/traps.c
+++ b/arch/xtensa/kernel/traps.c
@@ -491,32 +491,27 @@ void show_trace(struct task_struct *task, unsigned long *sp)
pr_info("Call Trace:\n");
walk_stackframe(sp, show_trace_cb, NULL);
-#ifndef CONFIG_KALLSYMS
- pr_cont("\n");
-#endif
}
-static int kstack_depth_to_print = 24;
+#define STACK_DUMP_ENTRY_SIZE 4
+#define STACK_DUMP_LINE_SIZE 32
+static size_t kstack_depth_to_print = 24;
void show_stack(struct task_struct *task, unsigned long *sp)
{
- int i = 0;
- unsigned long *stack;
+ size_t len;
if (!sp)
sp = stack_pointer(task);
- stack = sp;
- pr_info("Stack:\n");
+ len = min((-(size_t)sp) & (THREAD_SIZE - STACK_DUMP_ENTRY_SIZE),
+ kstack_depth_to_print * STACK_DUMP_ENTRY_SIZE);
- for (i = 0; i < kstack_depth_to_print; i++) {
- if (kstack_end(sp))
- break;
- pr_cont(" %08lx", *sp++);
- if (i % 8 == 7)
- pr_cont("\n");
- }
- show_trace(task, stack);
+ pr_info("Stack:\n");
+ print_hex_dump(KERN_INFO, " ", DUMP_PREFIX_NONE,
+ STACK_DUMP_LINE_SIZE, STACK_DUMP_ENTRY_SIZE,
+ sp, len, false);
+ show_trace(task, sp);
}
DEFINE_SPINLOCK(die_lock);
--
2.20.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v3 2/2] xtensa: make stack dump size configurable
2019-11-12 22:44 [PATCH v3 0/2] xtensa: improve stack dumping Max Filippov
2019-11-12 22:44 ` [PATCH v3 1/2] " Max Filippov
@ 2019-11-12 22:44 ` Max Filippov
1 sibling, 0 replies; 3+ messages in thread
From: Max Filippov @ 2019-11-12 22:44 UTC (permalink / raw)
To: linux-xtensa
Cc: Chris Zankel, linux-kernel, Dmitry Safonov, Petr Mladek,
Joe Perches, Max Filippov
Introduce Kconfig symbol PRINT_STACK_DEPTH and use it to initialize
kstack_depth_to_print.
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
Changes v2->v3:
- split Kconfig change into separate patch
arch/xtensa/Kconfig.debug | 7 +++++++
arch/xtensa/kernel/traps.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/arch/xtensa/Kconfig.debug b/arch/xtensa/Kconfig.debug
index 39de98e20018..83cc8d12fa0e 100644
--- a/arch/xtensa/Kconfig.debug
+++ b/arch/xtensa/Kconfig.debug
@@ -31,3 +31,10 @@ config S32C1I_SELFTEST
It is easy to make wrong hardware configuration, this test should catch it early.
Say 'N' on stable hardware.
+
+config PRINT_STACK_DEPTH
+ int "Stack depth to print" if DEBUG_KERNEL
+ default 64
+ help
+ This option allows you to set the stack depth that the kernel
+ prints in stack traces.
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c
index be26ec6c0e0e..87bd68dd7687 100644
--- a/arch/xtensa/kernel/traps.c
+++ b/arch/xtensa/kernel/traps.c
@@ -495,7 +495,7 @@ void show_trace(struct task_struct *task, unsigned long *sp)
#define STACK_DUMP_ENTRY_SIZE 4
#define STACK_DUMP_LINE_SIZE 32
-static size_t kstack_depth_to_print = 24;
+static size_t kstack_depth_to_print = CONFIG_PRINT_STACK_DEPTH;
void show_stack(struct task_struct *task, unsigned long *sp)
{
--
2.20.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-11-12 22:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-12 22:44 [PATCH v3 0/2] xtensa: improve stack dumping Max Filippov
2019-11-12 22:44 ` [PATCH v3 1/2] " Max Filippov
2019-11-12 22:44 ` [PATCH v3 2/2] xtensa: make stack dump size configurable Max Filippov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.