Loading include/linux/sched_clock.h +4 −0 Original line number Diff line number Diff line Loading @@ -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) { } Loading @@ -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 kernel/smp.c +3 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/sched.h> #include <linux/sched/idle.h> #include <linux/hypervisor.h> #include <linux/suspend.h> #include "smpboot.h" Loading Loading @@ -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(); Loading kernel/time/sched_clock.c +2 −2 Original line number Diff line number Diff line Loading @@ -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]; Loading @@ -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]; Loading kernel/time/tick-common.c +3 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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(); Loading @@ -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 { Loading Loading
include/linux/sched_clock.h +4 −0 Original line number Diff line number Diff line Loading @@ -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) { } Loading @@ -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
kernel/smp.c +3 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/sched.h> #include <linux/sched/idle.h> #include <linux/hypervisor.h> #include <linux/suspend.h> #include "smpboot.h" Loading Loading @@ -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(); Loading
kernel/time/sched_clock.c +2 −2 Original line number Diff line number Diff line Loading @@ -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]; Loading @@ -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]; Loading
kernel/time/tick-common.c +3 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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(); Loading @@ -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 { Loading