--- v1
+++ v2
@@ -1,68 +1,17 @@
-Move show_instructions() declaration to arch/powerpc/include/asm/stacktrace.h
-and include asm/stracktrace.h in arch/powerpc/kernel/process.c, which contains
-the implementation.
-
Modify show_instructions() not to call __kernel_text_address(), allowing
-userspace instruction dump. probe_kernel_address(), which returns -EFAULT if
-something goes wrong, is still being called.
-
-Call show_instructions() in arch/powerpc/kernel/traps.c to dump instructions at
-faulty location, useful to debugging.
-
-Before this patch, an unhandled signal message looked like:
-
- Jul 24 09:57:00 localhost kernel: pandafault[10524]: segfault (11) at 00000000100007d0 nip 000000001000061c lr 00007fffbd295100 code 2 in pandafault[10000000+10000]
-
-After this patch, it looks like:
-
- Jul 24 09:57:00 localhost kernel: pandafault[10524]: segfault (11) at 00000000100007d0 nip 000000001000061c lr 00007fffbd295100 code 2 in pandafault[10000000+10000]
- Jul 24 09:57:00 localhost kernel: Instruction dump:
- Jul 24 09:57:00 localhost kernel: 4bfffeec 4bfffee8 3c401002 38427f00 fbe1fff8 f821ffc1 7c3f0b78 3d22fffe
- Jul 24 09:57:00 localhost kernel: 392988d0 f93f0020 e93f0020 39400048 <99490000> 39200000 7d234b78 383f0040
+userspace instruction dump. probe_kernel_address(), which returns -EFAULT
+if something goes wrong, is still being called.
Signed-off-by: Murilo Opsfelder Araujo <muriloo@linux.ibm.com>
---
- arch/powerpc/include/asm/stacktrace.h | 7 +++++++
- arch/powerpc/kernel/process.c | 6 +++---
- arch/powerpc/kernel/traps.c | 3 +++
- 3 files changed, 13 insertions(+), 3 deletions(-)
- create mode 100644 arch/powerpc/include/asm/stacktrace.h
+ arch/powerpc/kernel/process.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
-diff --git a/arch/powerpc/include/asm/stacktrace.h b/arch/powerpc/include/asm/stacktrace.h
-new file mode 100644
-index 000000000000..46e5ef451578
---- /dev/null
-+++ b/arch/powerpc/include/asm/stacktrace.h
-@@ -0,0 +1,7 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+#ifndef _ASM_POWERPC_STACKTRACE_H
-+#define _ASM_POWERPC_STACKTRACE_H
-+
-+void show_instructions(struct pt_regs *regs);
-+
-+#endif /* _ASM_POWERPC_STACKTRACE_H */
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
-index b1af3390249c..ee1d63e03c52 100644
+index 25b562c21b7b..04960796fcce 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
-@@ -52,6 +52,7 @@
- #include <asm/machdep.h>
- #include <asm/time.h>
- #include <asm/runlatch.h>
-+#include <asm/stacktrace.h>
- #include <asm/syscalls.h>
- #include <asm/switch_to.h>
- #include <asm/tm.h>
-@@ -1261,7 +1262,7 @@ struct task_struct *__switch_to(struct task_struct *prev,
-
- static int instructions_to_print = 16;
-
--static void show_instructions(struct pt_regs *regs)
-+void show_instructions(struct pt_regs *regs)
- {
- int i;
- unsigned long pc = regs->nip - (instructions_to_print * 3 / 4 *
-@@ -1283,8 +1284,7 @@ static void show_instructions(struct pt_regs *regs)
+@@ -1283,8 +1283,7 @@ static void show_instructions(struct pt_regs *regs)
pc = (unsigned long)phys_to_virt(pc);
#endif
@@ -72,26 +21,5 @@
pr_cont("XXXXXXXX ");
} else {
if (regs->nip == pc)
-diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
-index e55ee639d010..3beca17ac1b1 100644
---- a/arch/powerpc/kernel/traps.c
-+++ b/arch/powerpc/kernel/traps.c
-@@ -70,6 +70,7 @@
- #include <asm/hmi.h>
- #include <sysdev/fsl_pci.h>
- #include <asm/kprobes.h>
-+#include <asm/stacktrace.h>
-
- #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC_CORE)
- int (*__debugger)(struct pt_regs *regs) __read_mostly;
-@@ -357,6 +358,8 @@ static void show_signal_msg(int signr, struct pt_regs *regs, int code,
- print_vma_addr(KERN_CONT " in ", regs->nip);
-
- pr_cont("\n");
-+
-+ show_instructions(regs);
- }
-
- void _exception_pkey(int signr, struct pt_regs *regs, int code,
--
2.17.1