On Tue, Dec 10, 2019 at 12:20 PM Miroslav Lichvar <mlich...@redhat.com>
wrote:

> On Fri, Dec 06, 2019 at 12:35:21PM +0100, Christian Ehrhardt wrote:
> > To summarize:
> > - RTC init fails
> > - SCH_MainLoop then hangs
> > Could the second be a consequence of the first?
> > Does this make sense to anyone?
>
> It seems the RTC interrupts cannot be enabled. As Vincent suggests
> this is probably due to the HW/driver.
>
> With the -s option chronyd waits for the clock to be adjusted by RTC,
> but that doesn't happen because there are no interrupts.
>
> As a fix, I think we can change the error message to be fatal.
>
> --- a/rtc_linux.c
> +++ b/rtc_linux.c
> @@ -566,8 +566,7 @@ switch_interrupts(int onoff)
>    if (onoff) {
>      status = ioctl(fd, RTC_UIE_ON, 0);
>      if (status < 0) {
> -      LOG(LOGS_ERR, "Could not %s RTC interrupt : %s", "enable",
> strerror(errno));
> -      return;
> +      LOG_FATAL("Could not %s RTC interrupt : %s", "enable",
> strerror(errno));
>      }
>      skip_interrupts = 1;
>    } else {
>
> Although, I'm not sure if we shouldn'd limit that just to the -s
> option. Some users might have enabled rtcfile with such an RTC and
> they have syslog full of error messages, but chronyd should otherwise
> be working as expected.
>
> As for the rtc system test, it should be modified to detect an RTC
> which doesn't support interrupts and skip the test. I'm not sure how.
> Does hwclock -r show anything interesting on this RTC?
>

I was checking rtc output in dmesg and hwclock, nothing was suspicious to
me at this level.

Working:
x86 KVM
$ dmesg | grep -i rtc
[    0.557822] PM: RTC time: 11:57:17, date: 2019-12-10
[    1.765930] rtc_cmos 00:00: RTC can wake from S4
[    1.769633] rtc_cmos 00:00: registered as rtc0
[    1.772179] rtc_cmos 00:00: alarms up to one day, y3k, 114 bytes nvram,
hpet irqs
[    1.970044] rtc_cmos 00:00: setting system clock to 2019-12-10T11:57:18
UTC (1575979038)
$ sudo hwclock -r
2019-12-10 13:20:53.870726+00:00

armhf emulated in qemu
$ dmesg | grep -i rtc
[    6.718918] rtc-pl031 9010000.pl031: registered as rtc0
[   14.019679] rtc-pl031 9010000.pl031: setting system clock to
2019-12-10T12:27:16 UTC (1575980836
$ sudo hwclock -r
2019-12-10 13:21:47.949155+00:00

Failing
arm64 KVM
$ dmesg | grep -i rtc
[    0.876198] rtc-efi rtc-efi: registered as rtc0
[    1.046869] rtc-efi rtc-efi: setting system clock to 2019-12-10T11:44:59
UTC (1575978299)
$ sudo hwclock -r
2019-12-10 13:20:25.467829+00:00

$ dmesg | grep -i rtc
[    0.241872] rtc-generic rtc-generic: registered as rtc0
[    0.270221] rtc-generic rtc-generic: setting system clock to
2019-12-06T08:18:19 UTC (1575620299)
$ sudo hwclock -r
2019-12-10 13:22:47.968726+00:00

So far the test only checks if it exists test/system/101-rtc:
   [ -c "/dev/rtc" ] || test_skip "missing /dev/rtc"

I was checking the options of hwclock further and found the following to
work:
$ sudo hwclock -r --test | grep '^ioctl.*RTC_UIE_ON.*Invalid argument$'

--test  implies --verbose and in fact it tries to enable RTC_UIE_ON and
reports if that fails.
Probably better than writing a custom ioctl tool for that.

The full output is something like:
$ sudo hwclock -r --test
hwclock from util-linux 2.34
System Time: 1575984608.231551
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
ioctl(4, RTC_UIE_ON, 0): Invalid argument
Waiting in loop for time from /dev/rtc0 to change
...got clock tick
Time read from Hardware Clock: 2019/12/10 13:30:10
Hw clock time : 2019/12/10 13:30:10 = 1575984610 seconds since 1969
Time since last adjustment is 1575984610 seconds
Calculated Hardware Clock drift is 0.000000 seconds
2019-12-10 13:30:09.229564+00:00
Test mode: nothing was changed.

I have a fix that works locally, but I'll do a bigger loop of
packaging/rebuild/retest before submitting.

-- 
> Miroslav Lichvar
>
>
> --
> To unsubscribe email chrony-dev-requ...@chrony.tuxfamily.org with
> "unsubscribe" in the subject.
> For help email chrony-dev-requ...@chrony.tuxfamily.org with "help" in the
> subject.
> Trouble?  Email listmas...@chrony.tuxfamily.org.
>
>

-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

Reply via email to