Re: New kernel interface for sys_tz and timewarp?

Arnd Bergmann
2019-08-27T16:27:51Z

On Tue, Aug 20, 2019 at 8:58 PM Alexandre Belloni
<alexandre.belloni@bootlin.com> wrote:
>
> On 19/08/2019 13:09:03+0200, Karel Zak wrote:
> > On Wed, Aug 14, 2019 at 11:32:08AM +0200, Alexandre Belloni wrote:
> > > On 14/08/2019 11:09:36+0200, Lennart Poettering wrote:
> > > > On Mi, 14.08.19 10:31, Arnd Bergmann (arnd@arndb.de) wrote:
> > > >
> > > > > - glibc stops passing the caller timezone argument to the kernel
> > > > > - the distro kernel disables CONFIG_RTC_HCTOSYS,
> > > > > CONFIG_RTC_SYSTOHC and CONFIG_GENERIC_CMOS_UPDATE
> > > >
> > > > What's the benefit of letting userspace do this? It sounds a lot more
> > > > fragile to leave this syncing to userspace if the kernel can do this
> > > > trivially on its own.
> >
> > Good point, why CONFIG_RTC_SYSTOHC has been added to the kernel?
> >
> > If I good remember than it's because synchronize userspace hwclock
> > with rtc is pretty fragile and frustrating. We have improved this
> > hwclock code many times and it will never be perfect. See for example
> > hwclock --delay= option, sometimes hwclock has no clue about RTC behaviour.
> >
>
> With a bit of care, we can reliably set the rtc to the system time from
> userspace. It takes a bit of time (up to 2 seconds) but it can be
> reliably set with an accuracy of a few ms on a slow system and an rtc on
> a slow bus or a few ns with a fast system and a fast bus.
> I know I did say I would implement it in hwclock and I still didn't
> (sorry) but we could do better than the --delay option.

Would you use the regular RTC_SET_TIME ioctl for that, or
add a new RTC_SYS_TO_HC command that takes an explicit
offset? It sounds to me that the synchronization bit (actually
waiting for the right moment to update the rtc registers) is better
done in the kernel, while the decision about the offset and when
to call into the driver is better done in user space.

Arnd