]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 5 Mar 2016 19:27:41 +0000 (11:27 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 5 Mar 2016 19:27:41 +0000 (11:27 -0800)
added patches:
pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch

queue-3.10/pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch b/queue-3.10/pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch
new file mode 100644 (file)
index 0000000..1587e3e
--- /dev/null
@@ -0,0 +1,51 @@
+From 92f9e179a702a6adbc11e2fedc76ecd6ffc9e3f7 Mon Sep 17 00:00:00 2001
+From: Todd E Brandt <todd.e.brandt@linux.intel.com>
+Date: Wed, 2 Mar 2016 16:05:29 -0800
+Subject: PM / sleep / x86: Fix crash on graph trace through x86 suspend
+
+From: Todd E Brandt <todd.e.brandt@linux.intel.com>
+
+commit 92f9e179a702a6adbc11e2fedc76ecd6ffc9e3f7 upstream.
+
+Pause/unpause graph tracing around do_suspend_lowlevel as it has
+inconsistent call/return info after it jumps to the wakeup vector.
+The graph trace buffer will otherwise become misaligned and
+may eventually crash and hang on suspend.
+
+To reproduce the issue and test the fix:
+Run a function_graph trace over suspend/resume and set the graph
+function to suspend_devices_and_enter. This consistently hangs the
+system without this fix.
+
+Signed-off-by: Todd Brandt <todd.e.brandt@linux.intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/acpi/sleep.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/arch/x86/kernel/acpi/sleep.c
++++ b/arch/x86/kernel/acpi/sleep.c
+@@ -16,6 +16,7 @@
+ #include <asm/cacheflush.h>
+ #include <asm/realmode.h>
++#include <linux/ftrace.h>
+ #include "../../realmode/rm/wakeup.h"
+ #include "sleep.h"
+@@ -96,7 +97,13 @@ int acpi_suspend_lowlevel(void)
+        saved_magic = 0x123456789abcdef0L;
+ #endif /* CONFIG_64BIT */
++      /*
++       * Pause/unpause graph tracing around do_suspend_lowlevel as it has
++       * inconsistent call/return info after it jumps to the wakeup vector.
++       */
++      pause_graph_tracing();
+       do_suspend_lowlevel();
++      unpause_graph_tracing();
+       return 0;
+ }
index 4495f3ad8ff5aa394e1351c454a00e65cb9cca7f..b130535bca149a0c241841650712c0d296d6bcee 100644 (file)
@@ -5,3 +5,4 @@ x86-entry-compat-add-missing-clac-to-entry_int80_32.patch
 drm-ast-fix-incorrect-register-check-for-dram-width.patch
 libata-fix-hdio_get_32bit-ioctl.patch
 libata-align-ata_device-s-id-on-a-cacheline.patch
+pm-sleep-x86-fix-crash-on-graph-trace-through-x86-suspend.patch