On Tue, Nov 08, 2022 at 11:59:17AM +0000, Scott Cheloha wrote: > On some arm64 machines, the agtimer(4) ticks slowly enough that the > tc_delta() doesn't overflow across brief suspends. While working on > arm64 suspend/resume, kettenis@ has been seeing warnings like this > during resume: > > tc_setclock: cannot rewind uptime to 307.253324249 > > The warning is misleading and should be removed. The code is behaving > as intended, but in a way I didn't anticipate when I added the warning > a few years ago. > > It might be useful print a warning in inittodr(9) during resume if the > RTC time predates the system UTC suspend timestamp, but that's a > distinct concern. > > ok? > > Index: kern_tc.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_tc.c,v > retrieving revision 1.78 > diff -u -p -r1.78 kern_tc.c > --- kern_tc.c 18 Sep 2022 20:47:09 -0000 1.78 > +++ kern_tc.c 8 Nov 2022 11:53:01 -0000 > @@ -552,7 +552,6 @@ void > tc_setclock(const struct timespec *ts) > { > struct bintime new_naptime, old_naptime, uptime, utc; > - struct timespec tmp; > static int first = 1; > #ifndef SMALL_KERNEL > struct bintime elapsed; > @@ -582,12 +581,6 @@ tc_setclock(const struct timespec *ts) > new_naptime = timehands->th_naptime; > > mtx_leave(&windup_mtx); > - > - if (bintimecmp(&old_naptime, &new_naptime, ==)) { > - BINTIME_TO_TIMESPEC(&uptime, &tmp); > - printf("%s: cannot rewind uptime to %lld.%09ld\n", > - __func__, (long long)tmp.tv_sec, tmp.tv_nsec); > - } > > #ifndef SMALL_KERNEL > /* convert the bintime to ticks */ >
ok mlarkin