All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.