mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-21 03:17:18 +00:00
6203cbca5c
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
114 lines
3.5 KiB
Diff
114 lines
3.5 KiB
Diff
From 951ac5885b5a314d394ea0668dedccd7ed9216e5 Mon Sep 17 00:00:00 2001
|
|
From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
|
|
Date: Sat, 16 Jun 2012 15:30:45 +0200
|
|
Subject: [PATCH 30/73] ftrace: Disable function tracing during suspend/resume
|
|
and hibernation, again
|
|
|
|
commit 443772d408a25af62498793f6f805ce3c559309a upstream.
|
|
|
|
If function tracing is enabled for some of the low-level suspend/resume
|
|
functions, it leads to triple fault during resume from suspend, ultimately
|
|
ending up in a reboot instead of a resume (or a total refusal to come out
|
|
of suspended state, on some machines).
|
|
|
|
This issue was explained in more detail in commit f42ac38c59e0a03d (ftrace:
|
|
disable tracing for suspend to ram). However, the changes made by that commit
|
|
got reverted by commit cbe2f5a6e84eebb (tracing: allow tracing of
|
|
suspend/resume & hibernation code again). So, unfortunately since things are
|
|
not yet robust enough to allow tracing of low-level suspend/resume functions,
|
|
suspend/resume is still broken when ftrace is enabled.
|
|
|
|
So fix this by disabling function tracing during suspend/resume & hibernation.
|
|
|
|
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
|
|
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
kernel/power/hibernate.c | 6 ++++++
|
|
kernel/power/suspend.c | 3 +++
|
|
2 files changed, 9 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
|
|
index 7c0d578..013bd2e 100644
|
|
--- a/kernel/power/hibernate.c
|
|
+++ b/kernel/power/hibernate.c
|
|
@@ -367,6 +367,7 @@ int hibernation_snapshot(int platform_mode)
|
|
}
|
|
|
|
suspend_console();
|
|
+ ftrace_stop();
|
|
pm_restrict_gfp_mask();
|
|
error = dpm_suspend(PMSG_FREEZE);
|
|
if (error)
|
|
@@ -392,6 +393,7 @@ int hibernation_snapshot(int platform_mode)
|
|
if (error || !in_suspend)
|
|
pm_restore_gfp_mask();
|
|
|
|
+ ftrace_start();
|
|
resume_console();
|
|
dpm_complete(msg);
|
|
|
|
@@ -496,6 +498,7 @@ int hibernation_restore(int platform_mode)
|
|
|
|
pm_prepare_console();
|
|
suspend_console();
|
|
+ ftrace_stop();
|
|
pm_restrict_gfp_mask();
|
|
error = dpm_suspend_start(PMSG_QUIESCE);
|
|
if (!error) {
|
|
@@ -503,6 +506,7 @@ int hibernation_restore(int platform_mode)
|
|
dpm_resume_end(PMSG_RECOVER);
|
|
}
|
|
pm_restore_gfp_mask();
|
|
+ ftrace_start();
|
|
resume_console();
|
|
pm_restore_console();
|
|
return error;
|
|
@@ -529,6 +533,7 @@ int hibernation_platform_enter(void)
|
|
|
|
entering_platform_hibernation = true;
|
|
suspend_console();
|
|
+ ftrace_stop();
|
|
error = dpm_suspend_start(PMSG_HIBERNATE);
|
|
if (error) {
|
|
if (hibernation_ops->recover)
|
|
@@ -572,6 +577,7 @@ int hibernation_platform_enter(void)
|
|
Resume_devices:
|
|
entering_platform_hibernation = false;
|
|
dpm_resume_end(PMSG_RESTORE);
|
|
+ ftrace_start();
|
|
resume_console();
|
|
|
|
Close:
|
|
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
|
|
index 4953dc0..af48faa 100644
|
|
--- a/kernel/power/suspend.c
|
|
+++ b/kernel/power/suspend.c
|
|
@@ -25,6 +25,7 @@
|
|
#include <linux/export.h>
|
|
#include <linux/suspend.h>
|
|
#include <linux/syscore_ops.h>
|
|
+#include <linux/ftrace.h>
|
|
#include <trace/events/power.h>
|
|
|
|
#include "power.h"
|
|
@@ -220,6 +221,7 @@ int suspend_devices_and_enter(suspend_state_t state)
|
|
goto Close;
|
|
}
|
|
suspend_console();
|
|
+ ftrace_stop();
|
|
suspend_test_start();
|
|
error = dpm_suspend_start(PMSG_SUSPEND);
|
|
if (error) {
|
|
@@ -239,6 +241,7 @@ int suspend_devices_and_enter(suspend_state_t state)
|
|
suspend_test_start();
|
|
dpm_resume_end(PMSG_RESUME);
|
|
suspend_test_finish("resume devices");
|
|
+ ftrace_start();
|
|
resume_console();
|
|
Close:
|
|
if (suspend_ops->end)
|
|
--
|
|
1.7.7.6
|
|
|