summaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/suspend.c
diff options
context:
space:
mode:
authorpopcornmix <popcornmix@gmail.com>2016-02-01 13:42:12 +0000
committerpopcornmix <popcornmix@gmail.com>2016-02-01 13:42:12 +0000
commit6330c27817186caf38fc80e467cf858d9dd167fd (patch)
tree25bb35d10d081ce9ea38183ed0920354c139a1ce /arch/arm64/kernel/suspend.c
parentdb37370d01c4f46c010ce666ce318fb385ac5fe7 (diff)
parent2d5f6b0413359df065fd02d695c08bbc7d998bbd (diff)
Merge remote-tracking branch 'stable/linux-4.1.y' into rpi-4.1.yrpi-bootloader-1.20160202-1
Diffstat (limited to 'arch/arm64/kernel/suspend.c')
-rw-r--r--arch/arm64/kernel/suspend.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c
index 53f1f8dccf6c..357418137db7 100644
--- a/arch/arm64/kernel/suspend.c
+++ b/arch/arm64/kernel/suspend.c
@@ -1,3 +1,4 @@
+#include <linux/ftrace.h>
#include <linux/percpu.h>
#include <linux/slab.h>
#include <asm/cacheflush.h>
@@ -71,6 +72,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
local_dbg_save(flags);
/*
+ * Function graph tracer state gets incosistent when the kernel
+ * calls functions that never return (aka suspend finishers) hence
+ * disable graph tracing during their execution.
+ */
+ pause_graph_tracing();
+
+ /*
* mm context saved on the stack, it will be restored when
* the cpu comes out of reset through the identity mapped
* page tables, so that the thread address space is properly
@@ -111,6 +119,8 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
hw_breakpoint_restore(NULL);
}
+ unpause_graph_tracing();
+
/*
* Restore pstate flags. OS lock and mdscr have been already
* restored, so from this point onwards, debugging is fully