git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers-nohz-2026-06-13
Updates for the NOHZ subsystem:

  - Fix a long standing TOCTOU in get_cpu_sleep_time_us()

  - Make the CPU offline NOHZ handling more robust by disabling NOHZ on the
    outgoing CPU early instead of creating unneeded state which needs to be
    undone.

  - Unify idle CPU time accounting instead of having two different
    accounting mechanisms. These two different mechanisms are not really
    independent, but the different properties can in the worst case cause
    that gloabl idle time can be observed going backwards.

  - Consolidate the idle/iowait time retrieval interfaces instead of
    converting back and forth between them.

  - Make idle interrupt time accounting more robust. The original code
    assumes that interrupt time accouting is enabled and therefore stops
    elapsing idle time while an interrupt is handled in NOHZ dyntick
    state. That assumption is not correct as interrupt time accounting can
    be disabled at compile and runtime.

  - Fix an accounting error between dyntick idle time and dyntick idle
    steal time. The stolen time is not accounted and therefore idle time
    becomes inaccurate. The stolen time is now accounted after the fact as
    there is no way to predict the steal time upfront.
sched/cputime: Handle dyntick-idle steal time correctly

The dyntick-idle steal time is currently accounted when the tick restarts
but the stolen idle time is not subtracted from the idle time that was
already accounted. This is to avoid observing the idle time going backward
as the dyntick-idle cputime accessors can't reliably know in advance the
stolen idle time.

In order to maintain a forward progressing idle cputime while subtracting
idle steal time from it, keep track of the previously accounted idle stolen
time and substract it from _later_ idle cputime accounting.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Tested-by: Shrikanth Hegde <sshegde@linux.ibm.com>
Link: https://patch.msgid.link/20260508131647.43868-16-frederic@kernel.org
2 files changed