> Date: Tue, 8 Nov 2022 11:59:17 +0000
> From: Scott Cheloha <[email protected]>
>
> 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?
ok kettenis@
> 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 */
>
>