<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">Hi Cyril,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 3, 2020 at 11:27 PM Cyril Hrubis <<a href="mailto:chrubis@suse.cz" target="_blank">chrubis@suse.cz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">That returns timestamps that should return values comparable to the<br>
stime/rtime/ctime.<br>
<br>
>From Thomas Gleixner:<br>
<br>
> Due to the internal implementation of ktime_get_real_seconds(), which is<br>
> a 2038 safe replacement for the former get_seconds() function, this<br>
> accumulation issue can be observed. (time(2) via syscall and newer<br>
> versions of VDSO use the same mechanism).<br>
><br>
>      clock_gettime(CLOCK_REALTIME, &ts);<br>
>      sec = time();<br>
>      assert(sec >= ts.tv_sec);<br>
><br>
> That assert can trigger for two reasons:<br>
><br>
>  1) Clock was set between the clock_gettime() and time().<br>
><br>
>  2) The clock has advanced far enough that:<br>
><br>
>     timekeeper.tv_nsec + (clock_now_ns() - last_update_ns) > NSEC_PER_SEC<br>
> The same problem exists for CLOCK_XXX vs. CLOCK_XXX_COARSE<br>
><br>
>      clock_gettime(CLOCK_XXX, &ts);<br>
>      clock_gettime(<span class="gmail_default" style="font-size:small"></span>CLOCK_XXX_COARSE, &tc);<br>
>      assert(tc.tv_sec >= ts.tv_sec);<br>
><br>
> The _COARSE variants return their associated timekeeper.tv_sec,tv_nsec<br>
> pair without reading the clock. Same as #2 above just extended to clock<br>
> MONOTONIC.<br>
<br>
Which means the timestamps in the structure we get from msg* calls can<br>
be 1 second smaller that timestamps returned from realtime timers.<br>
<br>
However it also means that <span class="gmail_default" style="font-size:small"></span>the _COARSE timers should be the same as the<br>
SysV timestamps and could be used for these tests instead. Also these<br>
timers should be available since 2.6.32 which is old enough to assume<br>
that they are present.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Sounds reasonable. From Thomas's analysis, it seems <span class="gmail_default"></span>the *_COARSE</div><div class="gmail_default" style="font-size:small">can work for us, so I'm OK to go with this way to fix.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"></div><div class="gmail_default" style="font-size:small">For series:</div><div class="gmail_default" style="font-size:small">Acked-by: Li Wang <<a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a>></div></div><div> </div></div>-- <br><div dir="ltr"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>