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

Commit 3aa8bfad authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "timers, sched/clock: Hook into s2idle freeze path"

parents d6fa86d6 12242fff
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@ extern void sched_clock_postinit(void);

extern void sched_clock_register(u64 (*read)(void), int bits,
				 unsigned long rate);
extern int sched_clock_suspend(void);
extern void sched_clock_resume(void);
#else
static inline void sched_clock_postinit(void) { }

@@ -21,6 +23,8 @@ static inline void sched_clock_register(u64 (*read)(void), int bits,
{
	;
}
static inline int sched_clock_suspend(void) { return 0; }
static inline void sched_clock_resume(void) { }
#endif

#endif
+3 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <linux/sched.h>
#include <linux/sched/idle.h>
#include <linux/hypervisor.h>
#include <linux/suspend.h>

#include "smpboot.h"

@@ -770,7 +771,8 @@ void wake_up_all_idle_cpus(void)
		if (cpu == smp_processor_id())
			continue;

		if (!cpu_isolated(cpu))
		if (s2idle_state == S2IDLE_STATE_ENTER ||
		    !cpu_isolated(cpu))
			wake_up_if_idle(cpu);
	}
	preempt_enable();
+2 −2
Original line number Diff line number Diff line
@@ -278,7 +278,7 @@ static u64 notrace suspended_sched_clock_read(void)
	return cd.read_data[seq & 1].epoch_cyc;
}

static int sched_clock_suspend(void)
int sched_clock_suspend(void)
{
	struct clock_read_data *rd = &cd.read_data[0];

@@ -294,7 +294,7 @@ static int sched_clock_suspend(void)
	return 0;
}

static void sched_clock_resume(void)
void sched_clock_resume(void)
{
	struct clock_read_data *rd = &cd.read_data[0];

+3 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#include <linux/percpu.h>
#include <linux/profile.h>
#include <linux/sched.h>
#include <linux/sched_clock.h>
#include <linux/module.h>
#include <trace/events/power.h>

@@ -490,6 +491,7 @@ void tick_freeze(void)
	if (tick_freeze_depth == num_online_cpus()) {
		trace_suspend_resume(TPS("timekeeping_freeze"),
				     smp_processor_id(), true);
		sched_clock_suspend();
		timekeeping_suspend();
	} else {
		tick_suspend_local();
@@ -513,6 +515,7 @@ void tick_unfreeze(void)

	if (tick_freeze_depth == num_online_cpus()) {
		timekeeping_resume();
		sched_clock_resume();
		trace_suspend_resume(TPS("timekeeping_freeze"),
				     smp_processor_id(), false);
	} else {