The branch stable/15 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ebb0e512d97e4355832fdc162a7a036842acf817
commit ebb0e512d97e4355832fdc162a7a036842acf817 Author: John Baldwin <[email protected]> AuthorDate: 2025-12-08 16:15:36 +0000 Commit: John Baldwin <[email protected]> CommitDate: 2025-12-19 15:19:44 +0000 thread0: Clear td_rux stats in proc0_post proc0_post aims to reset the CPU usage accounting for all threads and processes in the system to zero once the time of day is verified. However, not all of the per-thread stats were not being cleared, resulting in over-reported time for thread0 post-boot. Reviewed by: olce, kib, markj Fixes: bed4c5241663 ("Implement RUSAGE_THREAD. Add td_rux...") Differential Revision: https://reviews.freebsd.org/D54040 (cherry picked from commit dafe50ebd874ca3ccd5908c441cee9f478c501f0) --- sys/kern/init_main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index 3f3ebd386150..2f28a0cc800d 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -648,7 +648,8 @@ proc0_post(void *dummy __unused) /* * Now we can look at the time, having had a chance to verify the - * time from the filesystem. Pretend that proc0 started now. + * time from the filesystem. Pretend that all current threads + * started now. */ sx_slock(&allproc_lock); FOREACH_PROC_IN_SYSTEM(p) { @@ -661,10 +662,13 @@ proc0_post(void *dummy __unused) PROC_STATLOCK(p); rufetch(p, &ru); /* Clears thread stats */ ruxreset(&p->p_rux); - PROC_STATUNLOCK(p); FOREACH_THREAD_IN_PROC(p, td) { td->td_runtime = 0; + thread_lock(td); + ruxreset(&td->td_rux); + thread_unlock(td); } + PROC_STATUNLOCK(p); PROC_UNLOCK(p); } sx_sunlock(&allproc_lock);
