Scheduler fix:

- Fix a false positive cputime related warning in kcpustat_dyntick_stop()
    that can trigger sporadically after a clocksource switch (Stian Halseth)
 
 Signed-off-by: Ingo Molnar <mingo@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmrm5OsRHG1pbmdvQGtl
 cm5lbC5vcmcACgkQEnMQ0APhK1hYJQ//QXUMx7mhToCfl06aAQGKONCSbM/o40Kl
 N775KWhpcWXoJEJ5GvwJzs/c9/jplA6MzWv8m8ff6dPpq57vqa3GhdoDjR0w5mB9
 vxxTxYFkYgRcg3pkh7TbJ6olaYfzZTg6HyxUDqxhrSPHt4tgK+izCbM5JmSrsxgN
 yDDogrG5KfTKF43SE2whVFhS86L4Jlyq3ctD7ka8PqAglu+He4D0sc6y9seAFS9E
 QXNCi4tlgAccK+iDTO1jU23InZ856smMqkaGSLoXDqkMfuJe/dunDWD0nU0dYcCY
 gLSmHNAf/e73cexnMEdvYE4XkOb7mOd31zCmpLpxfyit5J7XGfoIzZ7kKoqx3OQp
 o8I98DVd+HU9Qw8JoEnaxcBurnPE4jsM0ZGZExbGPlIVIiny9uusVQYJfOCnTfAg
 P5gB2Z0r5SzzECE2Tw13oZfFWVkBvvaXutk3Ps/t0Yp01Zhac7FihmAFMJWMfM0H
 fgAOrd749DZG9976Tnj2dxpZtveOPN90fkpJRiTH12SC+NHumbnoY7MmPljD+QEa
 gqxecbpfW+CpxHjypmH5GTYBTwuBhKTl3YVItRO5wegS21g4CkpigukHaExpgOhn
 8o/UILjHOSY/8/YcvzraKctDh/JguUzbkffIuxG6TBczLfPlYK6pz4C1uyxa46rS
 MkQkuZaennc=
 =hgbA
 -----END PGP SIGNATURE-----

Merge tag 'sched-urgent-2026-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fix from Ingo Molnar:

 - Fix a false positive cputime related warning in kcpustat_dyntick_stop()
   that can trigger sporadically after a clocksource switch (Stian Halseth)

* tag 'sched-urgent-2026-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  sched/cputime: Don't warn when the tick period starts after idle exit
This commit is contained in:
Linus Torvalds 2026-11-01 09:52:32 -08:00
commit 46fec1c302

View File

@ -478,7 +478,12 @@ void kcpustat_dyntick_stop(u64 now, u64 tick_start)
kc->idle_tick_overlap = 0;
}
tick_start = max(tick_start, kc->idle_dyntick_entry);
if (!WARN_ON_ONCE(now < tick_start))
/*
* After a switch from the jiffies clocksource the tick can be
* armed more than a tick ahead, so the period may not have
* started yet.
*/
if (now > tick_start)
kc->idle_tick_overlap += now - tick_start;
kcpustat_idle_stop(kc, now);
kc->idle_dyntick = false;