On 14/08/2019 11:09:36+0200, Lennart Poettering wrote: > On Mi, 14.08.19 10:31, Arnd Bergmann (a...@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. >
It does it trivially and badly: - hctosys will always think the RTC is in UTC so if the RTC is in local time, you will anyway have up to 12 hours difference until userspace fixes that. - the way systohc and hctosys are working will lead up to a 2 second drift until ntp runs which is an issue for NTP stratum servers. My tests show that there is a way for userspace to reduce that to tens of nanoseconds but this means having a one or two seconds delay when setting and reading the time. I want that to be opt-in. - the RTC to be used for hctosys and systohc is hardcoded in Kconfig and distro usually let the default rtc0 but many platforms have a non functional RTC that ends up being rtc0. I would prefer that to be a userspace configuration change instead of a kernel configuration change > IIRC there are uses in kernel that use CLOCK_REALTIME already before > userspace starts. e.g. iirc networking generally prefers > CLOCK_REALTIME timestamps over CLOCK_MONOTONIC timestamps > (i.e. SO_TIMESTAMP and friends are still CLOCK_REALTIME only so far, > unless I am missing something). If the kernel comes up with a > CLOCK_REALTIME that starts at 0 this is pretty annoying I > figure... Hence, so far I suggested to distros to continue turning on > the options above, and let the kernel do this on its own without > involving userspace in that. > > Lennart > > -- > Lennart Poettering, Berlin -- Alexandre Belloni, Bootlin Embedded Linux and Kernel engineering https://bootlin.com