On Tue, May 17, 2016 at 01:24:15PM +0100, Matt Fleming wrote: > So, if the code looks like the following, either now or in the future, > > static void __schedule(bool preempt) > { > ... > /* Clear RQCF_ACT_SKIP */ > rq->clock_update_flags = 0; > ... > delta = rq_clock(); > } Sigh, you even said "Clear RQCF_ACT_SKIP", but you not only clear it, you clear everything. And if you clear the RQCF_UPDATE also (maybe you shouldn't, but actually it does not matter), of course you will get a warning...
In addition, it looks like multiple skips are possible, so: update_rq_clock() { rq->clock_update_flags |= RQCF_UPDATE; ... } instead of clearing the skip flag there.