]> git.baikalelectronics.ru Git - kernel.git/commit
x86: PM: Register syscore_ops for scale invariance
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 8 Jan 2021 18:05:59 +0000 (19:05 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 19 Jan 2021 16:04:03 +0000 (17:04 +0100)
commit965613c277dc0cec1042d072e5c06bb2080ae1c7
tree04499ef7cd30b33add8439af28fd9ab5efb53fff
parent0de845ca16708c4f084d3b978cd0e2e7dcbb43df
x86: PM: Register syscore_ops for scale invariance

On x86 scale invariace tends to be disabled during resume from
suspend-to-RAM, because the MPERF or APERF MSR values are not as
expected then due to updates taking place after the platform
firmware has been invoked to complete the suspend transition.

That, of course, is not desirable, especially if the schedutil
scaling governor is in use, because the lack of scale invariance
causes it to be less reliable.

To counter that effect, modify init_freq_invariance() to register
a syscore_ops object for scale invariance with the ->resume callback
pointing to init_counter_refs() which will run on the CPU starting
the resume transition (the other CPUs will be taken care of the
"online" operations taking place later).

Fixes: 3c882ae3db2a ("x86, sched: check for counters overflow in frequency invariant accounting")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Giovanni Gherdovich <ggherdovich@suse.cz>
Link: https://lkml.kernel.org/r/1803209.Mvru99baaF@kreacher
arch/x86/kernel/smpboot.c