Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cbe2f5a6 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

tracing: allow tracing of suspend/resume & hibernation code again



Impact: widen function-tracing to suspend+resume (and hibernation) sequences

Now that the ftrace kernel thread is gone, we can allow tracing
during suspend/resume again.

So revert these two commits:

  f42ac38c "ftrace: disable tracing for suspend to ram"
  41108eb1 "ftrace: disable tracing for hibernation"

This should be tested very carefully, as it could interact with
altneratives instruction patching, etc.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent a0a70c73
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@
#include <linux/console.h>
#include <linux/cpu.h>
#include <linux/freezer.h>
#include <linux/ftrace.h>

#include "power.h"

@@ -257,7 +256,7 @@ static int create_image(int platform_mode)

int hibernation_snapshot(int platform_mode)
{
	int error, ftrace_save;
	int error;

	/* Free memory before shutting down devices. */
	error = swsusp_shrink_memory();
@@ -269,7 +268,6 @@ int hibernation_snapshot(int platform_mode)
		goto Close;

	suspend_console();
	ftrace_save = __ftrace_enabled_save();
	error = device_suspend(PMSG_FREEZE);
	if (error)
		goto Recover_platform;
@@ -299,7 +297,6 @@ int hibernation_snapshot(int platform_mode)
 Resume_devices:
	device_resume(in_suspend ?
		(error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE);
	__ftrace_enabled_restore(ftrace_save);
	resume_console();
 Close:
	platform_end(platform_mode);
@@ -370,11 +367,10 @@ static int resume_target_kernel(void)

int hibernation_restore(int platform_mode)
{
	int error, ftrace_save;
	int error;

	pm_prepare_console();
	suspend_console();
	ftrace_save = __ftrace_enabled_save();
	error = device_suspend(PMSG_QUIESCE);
	if (error)
		goto Finish;
@@ -389,7 +385,6 @@ int hibernation_restore(int platform_mode)
	platform_restore_cleanup(platform_mode);
	device_resume(PMSG_RECOVER);
 Finish:
	__ftrace_enabled_restore(ftrace_save);
	resume_console();
	pm_restore_console();
	return error;
@@ -402,7 +397,7 @@ int hibernation_restore(int platform_mode)

int hibernation_platform_enter(void)
{
	int error, ftrace_save;
	int error;

	if (!hibernation_ops)
		return -ENOSYS;
@@ -417,7 +412,6 @@ int hibernation_platform_enter(void)
		goto Close;

	suspend_console();
	ftrace_save = __ftrace_enabled_save();
	error = device_suspend(PMSG_HIBERNATE);
	if (error) {
		if (hibernation_ops->recover)
@@ -452,7 +446,6 @@ int hibernation_platform_enter(void)
	hibernation_ops->finish();
 Resume_devices:
	device_resume(PMSG_RESTORE);
	__ftrace_enabled_restore(ftrace_save);
	resume_console();
 Close:
	hibernation_ops->end();
+1 −4
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@
#include <linux/freezer.h>
#include <linux/vmstat.h>
#include <linux/syscalls.h>
#include <linux/ftrace.h>

#include "power.h"

@@ -317,7 +316,7 @@ static int suspend_enter(suspend_state_t state)
 */
int suspend_devices_and_enter(suspend_state_t state)
{
	int error, ftrace_save;
	int error;

	if (!suspend_ops)
		return -ENOSYS;
@@ -328,7 +327,6 @@ int suspend_devices_and_enter(suspend_state_t state)
			goto Close;
	}
	suspend_console();
	ftrace_save = __ftrace_enabled_save();
	suspend_test_start();
	error = device_suspend(PMSG_SUSPEND);
	if (error) {
@@ -360,7 +358,6 @@ int suspend_devices_and_enter(suspend_state_t state)
	suspend_test_start();
	device_resume(PMSG_RESUME);
	suspend_test_finish("resume devices");
	__ftrace_enabled_restore(ftrace_save);
	resume_console();
 Close:
	if (suspend_ops->end)