Re: [chrony-dev] [PATCH] More reliable method of reading rtc for initial trim

[ Thread Index | Date Index | More chrony.tuxfamily.org/chrony-dev Archives ]


On Wed, May 28, 2014 at 02:52:54PM +0200, Hattink, Tjalling [FINT] wrote:
> When the kernel rtc driver queries the rtc it has to issue multiple read
> operations to get the data. It first reads the seconds, then minutes,
> hours, etc.. You can see this happening in the kernel 3.10.34 at
> drivers/char/rtc.c:1323-1331
> 
> The problem is that between these read operations the rtc hardware could
> update itself by adding a second.

Isn't the following code in the kernel code (above the CMOS
operations) supposed to prevent that?

	/*
	 * read RTC once any update in progress is done. The update
	 * can take just over 2ms. We wait 20ms. There is no need to
	 * to poll-wait (up to 1s - eeccch) for the falling edge of RTC_UIP.
	 * If you need to know *exactly* when a second has started, enable
	 * periodic update complete interrupts, (via ioctl) and then
	 * immediately read /dev/rtc which will block until you get the IRQ.
	 * Once the read clears, read the RTC time (again via ioctl). Easy.
	 */

	while (rtc_is_updating() != 0 &&
	       time_before(jiffies, uip_watchdog + 2*HZ/100))
		cpu_relax();

> I've been able to see this behavior by continuously reading
> the rtc clock. 

Was that with the RTC_RD_TIME ioctl or were you reading CMOS directly?
I tried to reproduce it with a program continuosly reading the RTC
with the ioctl, I let it run overnight, but it didn't report any
occurence of the problem.

> I got it from
> https://git.kernel.org/cgit/utils/util-linux/util-linux.git/tree/sys-uti
> ls/hwclock-cmos.c?h=stable/v2.24
> From line 518-553. In here you also see a while loop, and the seconds
> checked at line 551

Ok, but that's used when CMOS is read directly, not with the
RTC_RD_TIME ioctl.

The patch looks good to me, I just want to be sure I understand when
can this happen.

Thanks,

-- 
Miroslav Lichvar

-- 
To unsubscribe email chrony-dev-request@xxxxxxxxxxxxxxxxxxxx with "unsubscribe" in the subject.
For help email chrony-dev-request@xxxxxxxxxxxxxxxxxxxx with "help" in the subject.
Trouble?  Email listmaster@xxxxxxxxxxxxxxxxxxxx.


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/