From: Greg Kroah-Hartman Date: Wed, 1 Aug 2012 20:18:25 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.5.1~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43d39964eda81e77dd55950fa5e360f4f9b5d404;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: ftrace-disable-function-tracing-during-suspend-resume-and-hibernation-again.patch --- diff --git a/queue-3.0/ftrace-disable-function-tracing-during-suspend-resume-and-hibernation-again.patch b/queue-3.0/ftrace-disable-function-tracing-during-suspend-resume-and-hibernation-again.patch new file mode 100644 index 00000000000..a3c98fa66de --- /dev/null +++ b/queue-3.0/ftrace-disable-function-tracing-during-suspend-resume-and-hibernation-again.patch @@ -0,0 +1,108 @@ +From 443772d408a25af62498793f6f805ce3c559309a Mon Sep 17 00:00:00 2001 +From: "Srivatsa S. Bhat" +Date: Sat, 16 Jun 2012 15:30:45 +0200 +Subject: ftrace: Disable function tracing during suspend/resume and hibernation, again + +From: "Srivatsa S. Bhat" + +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 +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/power/hibernate.c | 6 ++++++ + kernel/power/suspend.c | 3 +++ + 2 files changed, 9 insertions(+) + +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c +@@ -344,6 +344,7 @@ int hibernation_snapshot(int platform_mo + goto Complete_devices; + + suspend_console(); ++ ftrace_stop(); + pm_restrict_gfp_mask(); + error = dpm_suspend(PMSG_FREEZE); + if (error) +@@ -369,6 +370,7 @@ int hibernation_snapshot(int platform_mo + if (error || !in_suspend) + pm_restore_gfp_mask(); + ++ ftrace_start(); + resume_console(); + + Complete_devices: +@@ -471,6 +473,7 @@ int hibernation_restore(int platform_mod + + pm_prepare_console(); + suspend_console(); ++ ftrace_stop(); + pm_restrict_gfp_mask(); + error = dpm_suspend_start(PMSG_QUIESCE); + if (!error) { +@@ -478,6 +481,7 @@ int hibernation_restore(int platform_mod + dpm_resume_end(PMSG_RECOVER); + } + pm_restore_gfp_mask(); ++ ftrace_start(); + resume_console(); + pm_restore_console(); + return error; +@@ -504,6 +508,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) +@@ -547,6 +552,7 @@ int hibernation_platform_enter(void) + Resume_devices: + entering_platform_hibernation = false; + dpm_resume_end(PMSG_RESTORE); ++ ftrace_start(); + resume_console(); + + Close: +--- a/kernel/power/suspend.c ++++ b/kernel/power/suspend.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + + #include "power.h" +@@ -210,6 +211,7 @@ int suspend_devices_and_enter(suspend_st + goto Close; + } + suspend_console(); ++ ftrace_stop(); + suspend_test_start(); + error = dpm_suspend_start(PMSG_SUSPEND); + if (error) { +@@ -226,6 +228,7 @@ int suspend_devices_and_enter(suspend_st + suspend_test_start(); + dpm_resume_end(PMSG_RESUME); + suspend_test_finish("resume devices"); ++ ftrace_start(); + resume_console(); + Close: + if (suspend_ops->end) diff --git a/queue-3.0/series b/queue-3.0/series index f90dd3c392d..15ff44961b5 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -12,3 +12,4 @@ alsa-hda-add-support-for-realtek-alc282.patch usbdevfs-correct-amount-of-data-copied-to-user-in-processcompl_compat.patch usb-gadget-fix-g_ether-interface-link-status.patch locks-fix-checking-of-fcntl_setlease-argument.patch +ftrace-disable-function-tracing-during-suspend-resume-and-hibernation-again.patch