Patch "timers, sched_clock: Update timeout for clock wrap" has been added to the 4.4-stable tree
This is a note to let you know that I've just added the patch titled
timers, sched_clock: Update timeout for clock wrap
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
timers-sched_clock-update-timeout-for-clock-wrap.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Mar 19 09:58:12 CET 2018
From: David Engraf <[email protected]>
Date: Fri, 17 Feb 2017 08:51:03 +0100
Subject: timers, sched_clock: Update timeout for clock wrap
From: David Engraf <[email protected]>
[ Upstream commit 1b8955bc5ac575009835e371ae55e7f3af2197a9 ]
The scheduler clock framework may not use the correct timeout for the clock wrap. This happens when a new clock driver calls sched_clock_register() after the kernel called sched_clock_postinit(). In this case the clock wrap timeout is too long thus sched_clock_poll() is called too late and the clock already wrapped.
On my ARM system the scheduler was no longer scheduling any other task than the idle task because the sched_clock() wrapped.
--- kernel/time/sched_clock.c | 5 +++++ 1 file changed, 5 insertions(+)
kernel/time/sched_clock.c +5 -0
@@ -205,6 +205,11 @@ sched_clock_register(u64 (*read)(void),update_clock_read_data (&rd); +if (sched_clock_timer.function !=NULL ) { +/* update timeout for clock wrap */ +hrtimer_start (&sched_clock_timer, cd.wrap_kt,HRTIMER_MODE_REL ); + } + r = rate;if (r >=4000000 ) { r /=1000000 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/timers-sched_clock-update-timeout-for-clock-wrap.patch