Re: set_rtc_time() cleanup / normalization
From: Wolfgang Denk <hidden>
Date: 2003-05-13 13:35:23
In message [ref] Gabriel Paubert wrote:
quoted
quoted
I certainly would like to know the details of this. I believe it may be fixing the symptom rather than the cause (an NTP bug).As far as I remember, NTP estimates the error of your RTC and uses that estimation to correct your time if no NTP server is available, but the estimation step fails if the kernel messes with the RTC behind NTP's back.In this case NTP should never clear the STA_UNSYNC flag shen it synchronized to the local clock (driver 127.127.0.0 IIRC) . The state change from 0x41 to 0x01 should never happen for the kernel side of the status flags, this would avoid creating the loop.
There are eventually two problems: * Probably there is a problem in NTP. The conficuration where the problem was observed was one where NTP was used with a "server 127.127.1.0" setting with no other synchronization source. * set_rtc_time() should never be called from timer interrupt. Setting the RTC will in many cases involce transactions over I2C which (1) are awfully slow and (2) involve interrup processing themselfs so they cannot be used in interrupt context. I think we should remove this code from the timer interrupt handler. Best regards, Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de Living on Earth may be expensive, but it includes an annual free trip around the Sun. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/