On Thu, Aug 31, 2023 at 04:48:29PM +0800, Hao Jia wrote:
If I understand correctly, rq->clock_update_flags may be set to RQCF_ACT_SKIP after __schedule() holds the rq lock, and sometimes the rq lock may be released briefly in __schedule(), such as newidle_balance(). At this time Other CPUs hold this rq lock, and then calling rq_clock_start_loop_update() may trigger this warning.
This warning check might be wrong. We need to add assert_clock_updated() to check that the rq clock has been updated before calling rq_clock_start_loop_update().
Maybe some things can be like this?
Urgh, aside from it being white space mangled, I think this is entirely going in the wrong direction.
Leaking ACT_SKIP is dodgy as heck.. it's entirely too late to think clearly though, I'll have to try again tomorrow.