lkml.org 
[lkml]   [2017]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Introduce clock precision to help time travelers was Re: Extreme time jitter with suspend/resume cycles
On Wed 2017-10-18 23:26:45, Alexandre Belloni wrote:
> On 18/10/2017 at 23:08:28 +0200, Pavel Machek wrote:
> > On Wed 2017-10-18 21:34:49, Alan Cox wrote:
> > > > And even the boring ones have pretty imprecise RTCs... For example Nokia N9.
> > > > I only power it up from time to time, I believe it drifts something like
> > > > minute per month... For normal use with SIM card, it can probably correct
> > > > from GSM network if you happen to have a cell phone signal, but...
> > > >
> > > > More interesting machines... Old thinkpad is running without CMOS battery.
> > > > ARM OLPC has _three_ RTCs, but not a single working one. N900 has working
> > > > RTC but no or dead backup battery. On these, RTC driver probably knows
> > > > time is not valid, but feeds the garbage into the system time, anyway. Ouch.
> > > > Neither Sharp Zaurus SL-5500 nor C-3000 had battery backup on RTC...
> > >
> > > Not a new problem, RTC's used to cost lots of money 8)
> > >
> > > Most early Unixen set the clock at boot from the superblock timestamp of
> > > the root fs, some with RTC's also used to scream at you if the superblock
> > > stamp was too far head of current time.That doesn't quite work with
> > > initrd but you can do the same in userspace on Linux so you'll at least
> > > get 'when I last booted it' and because it's always moving forward lots
> > > of other messes don't happen.
> >
> > Yeah, that's what "swclock" module of init system does. Someone solved
> > that one for me. But... that's not good enough. In particular, I'd
> > like time not to be displayed when "swclock" was used. Nokia 6230
> > could do it, so linux should be able to do it, too.
> >
> > It seems kernel should pass accurancy info, or at least "this time is
> > probably off by hours at least" from gettimeofday() and similar
> > syscalls...
>
> The question being how do you expect the kernel to get that information?

I expect userland to tell kernel. "time is now 12.34, source is ntp,
to it is precise to milliseconds". Or maybe "time is now 23.45, source
is swclock, so it may be off by months".

> Some RTCs will tell you when they lost time/time accuracy and this
> should be properly reported by the driver. If not, this has to be
> implemented.

How is it reported to the userspace?

> For anything else, it is probably the job of userspace to try to be
> clever.

Userspace would be fine with me, but as far as I can tell, there's no
good way to do it in userspace.

My proposal would be: kernel keeps accuracy for timeofday.

If RTC says time is bad, accuracy is set to ~0.

settimeofday sets accuracy to 0 (completely accurate).

new_settimeofday gets new argument, accuracy.

new_gettimofday returns accuracy, too.

Does that sound sane? I'm not sure what other interfaces need to be extended.

Best regards,
Pavel

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2017-10-22 17:18    [W:0.152 / U:0.152 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site