summaryrefslogtreecommitdiff
path: root/arch/arm64
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-08-26 14:48:21 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-08-26 14:48:21 -0700
commit30f32fdd4e42236d31256d542f520a4456533150 (patch)
treeed3b6aa442e9951a09c0228e379877976bbb9987 /arch/arm64
parent0366550001001b23642712c482c8b9ee7ae29d61 (diff)
parentc34bf4be22d64499449d1cfe550b05365d048403 (diff)
Merge "coresight: abort coresight tracing on kernel crash"
Diffstat (limited to 'arch/arm64')
-rw-r--r--arch/arm64/kernel/traps.c4
-rw-r--r--arch/arm64/mm/fault.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index e8b1f7910490..48b75ece4c17 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -44,6 +44,8 @@
#include <asm/esr.h>
#include <asm/edac.h>
+#include <trace/events/exception.h>
+
static const char *handler[]= {
"Synchronous Abort",
"IRQ",
@@ -421,6 +423,8 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
if (call_undef_hook(regs) == 0)
return;
+ trace_undef_instr(regs, (void *)pc);
+
if (unhandled_signal(current, SIGILL) && show_unhandled_signals_ratelimited()) {
pr_info("%s[%d]: undefined instruction: pc=%p\n",
current->comm, task_pid_nr(current), pc);
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index 7bb08670fc10..69079e5bfc84 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -40,6 +40,8 @@
#include <asm/tlbflush.h>
#include <asm/edac.h>
+#include <trace/events/exception.h>
+
static const char *fault_name(unsigned int esr);
/*
@@ -118,6 +120,8 @@ static void __do_user_fault(struct task_struct *tsk, unsigned long addr,
{
struct siginfo si;
+ trace_user_fault(tsk, addr, esr);
+
if (unhandled_signal(tsk, sig) && show_unhandled_signals_ratelimited()) {
pr_info("%s[%d]: unhandled %s (%d) at 0x%08lx, esr 0x%03x\n",
tsk->comm, task_pid_nr(tsk), fault_name(esr), sig,