linux-mips
[Top] [All Lists]

Re: [patch] Generic time fixes

To: "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>
Subject: Re: [patch] Generic time fixes
From: Jun Sun <jsun@mvista.com>
Date: Tue, 22 Jul 2003 10:10:14 -0700
Cc: Ralf Baechle <ralf@linux-mips.org>, Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de>, linux-mips@linux-mips.org, jsun@mvista.com
In-reply-to: <Pine.GSO.3.96.1030722093500.607A-100000@delta.ds2.pg.gda.pl>; from macro@ds2.pg.gda.pl on Tue, Jul 22, 2003 at 09:58:46AM +0200
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <Pine.GSO.3.96.1030722093500.607A-100000@delta.ds2.pg.gda.pl>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.2.5i
On Tue, Jul 22, 2003 at 09:58:46AM +0200, Maciej W. Rozycki wrote:
> Hello,
> 
>  In preparation to merging DECstation's time support with the generic
> version I did the following clean-ups to generic time support.  Most of
> these are coding style fixes (which might have already been fixed by
> someone else during past two days -- I haven't been able to study the
> changes), but there are a few code changes (detailed below) as well.
> 
>  Before I proceed further I need to get an aswer to the following
> question: why do we use rtc_set_time() for NTP RTC updates instead of
> rtc_set_mmss() like most other architectures do?  Traditionally Linux only
> updated minutes and seconds in this context and I don't think we need to
> do anything more.  And setting minutes and seconds only is way, way
> faster. Which might not matter that much every 11 minutes, except doing
> things slowly here incurs a disruption in the latency of the timer
> interrupt, which NTP might not like and the slow calculation of the RTC
> time causes less precise time being stored in the RTC chip. 
>

rtc_set_time() is more generic interface as it is also used in other 
places.  Boards which easily speed up (i.e., emulate rtc_set_mmss()) by
doing something like the following:

rtc_set_time(t)
{
        if (t-last_time_set < 660 + delta)
                rtc_set_mmss(t);
        else
                /* do a full rtc set */
        last_time_set = t;
}

A lot of boards don't do RTC update, and even when they do they
usually don't have performance issues (such as in vr41xx cases).
It is not fair to tax every board by requiring a new board interface
function.

BTW, at least one other arch (PPC) is not using rtc_set_mmss().

>  It's already questionable whether the update should be done at all (this
> was discussed zillion of times at the NTP group) and it disrupts
> timekeeping of the DECstation severely, but given the current choice, I'd
> prefer to make it as lightweight as possible.
> 

Whether to keep rtc in sync is an option which can be set by a board
Simply do a

time_status |= STA_UNSYNC 

in your <board>_setup routine will disable any RTC update.

>  Here are the changes done:
>

The changes look good to me.

Jun

<Prev in Thread] Current Thread [Next in Thread>