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

Reply via email to