This reverts commit ea99d5c0e7.
This is a preparation change for merging android-4.19.37 into
msm-4.19 branch.
Functions sched_clock_suspend and sched_clock_resume are defined twice in
different header files by [1] and [2] ([1] is part of upmerge[3]).
When file includes those two header files, a redefinition error occurs.
To prevent this [2] is reverted.
[1] cd37fd4("timers/sched_clock: Prevent generic sched_clock wrap caused
by tick_freeze()")
[2] ea99d5c0("timers, sched/clock: Hook into s2idle freeze path")
[3] Merge android-4.19.37 (9bf5904) into msm-4.19.
Change-Id: I667a23598fd2a3bd2abcddd7286011b5ebc47559
Signed-off-by: Ivaylo Georgiev <irgeorgiev@codeaurora.org>
The sched_clock() suspend/resume callbacks are called from a
syscore_ops structure that's registered after the timekeeping
syscore_ops. With the suspend-to-idle method of suspend we will
freeze the tick and timekeeping subsystem, but we don't suspend
the sched clock here, because syscore ops are not called in
suspend to idle. Hook this up directly in the timekeeping freeze
path when we go idle on the last CPU. This way, the sched clock
doesn't jump across a suspend/resume cycle.
Change-Id: I2ea488dce7186d6210d3af34b0e1a67c9f1cdf78
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
When we try to compile a clocksource driver with the COMPILE_TEST option,
we can't select the GENERIC_SCHED_CLOCK because the sched_clock() symbol
will be duplicated with the one defined for the x86.
In order to fix that, we don't select the GENERIC_SCHED_CLOCK in the
driver Kconfig's file but we define some empty functions for the different
symbols in order to prevent the unresolved ones.
This patch fixes the COMPILE_TEST option for the compile test coverage for
the clocksource drivers. Without this patch, we can't add the COMPILE_TEST
option for the clocksource drivers using the GENERIC_SCHED_CLOCK.
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Remove the 32-bit only setup_sched_clock() API now that all users
have been converted to the 64-bit friendly sched_clock_register().
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Nobody is using sched_clock_func() anymore now that sched_clock
supports up to 64 bits. Remove the hook so that new code only
uses sched_clock_register().
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
The ARM architected system counter has at least 56 usable bits.
Add support for counters with more than 32 bits to the generic
sched_clock implementation so we can increase the time between
wakeups due to dealing with wrap-around on these devices while
benefiting from the irqtime accounting and suspend/resume
handling that the generic sched_clock code already has. On my
system using 56 bits over 32 bits changes the wraparound time
from a few minutes to an hour. For faster running counters (GHz
range) this is even more important because we may not be able to
execute the timer in time to deal with the wraparound if only 32
bits are used.
We choose a maxsec value of 3600 seconds because we assume no
system will go idle for more than an hour. In the future we may
need to increase this value.
Note: All users should switch over to the 64-bit read function so
we can remove setup_sched_clock() in favor of sched_clock_register().
Cc: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Nothing about the sched_clock implementation in the ARM port is
specific to the architecture. Generalize the code so that other
architectures can use it by selecting GENERIC_SCHED_CLOCK.
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
[jstultz: Merge minor collisions with other patches in my tree]
Signed-off-by: John Stultz <john.stultz@linaro.org>