![]() | |||||||||||||
Messages in this thread Patch in this message |
Did you pick this up? First sent on 3-11. Andrew Morton wrote: > Lee Revell <rlrevell@joe-job.com> wrote: > >>On Thu, 2005-03-10 at 00:42 -0800, George Anzinger wrote: >> >>>This patch changes the update of the cmos clock to be timer driven >>>rather than poll driven by the timer interrupt function. If the clock >>>is not being synced to an outside source the timer is removed and thus >>>system overhead is nill in that case. The update frequency is still ~11 >>>minutes and missing the update window still causes a retry in 60 >>>seconds. >> >>No replies yet. Are there any objections to this patch? > > > Nope. I think it's neat. I queued it up. I had a nightmare about ntp coming in at the "wrong" time resulting in a deadlock. Attached locking changes will make me sleep better :) -- George Anzinger george@mvista.com High-res-timers: http://sourceforge.net/projects/high-res-timers/ Source: MontaVista Software, Inc. Type: Defect Fix Disposition: Pending Description: I was not happy with the locking on this. Two changes: 1) Turn off irq while setting the clock. 2) Call the timer code only through the timer interface (set a short timer to do it from the ntp call). Signed-off-by: George Anzinger <george@mvista.com> time.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: linux-2.6.12-rc/arch/i386/kernel/time.c =================================================================== --- linux-2.6.12-rc.orig/arch/i386/kernel/time.c +++ linux-2.6.12-rc/arch/i386/kernel/time.c @@ -176,12 +176,12 @@ static int set_rtc_mmss(unsigned long no int retval; /* gets recalled with irq locally disabled */ - spin_lock(&rtc_lock); + spin_lock_irq(&rtc_lock); if (efi_enabled) retval = efi_set_rtc_mmss(nowtime); else retval = mach_set_rtc_mmss(nowtime); - spin_unlock(&rtc_lock); + spin_unlock_irq(&rtc_lock); return retval; } @@ -338,7 +338,7 @@ static void sync_cmos_clock(unsigned lon } void notify_arch_cmos_timer(void) { - sync_cmos_clock(0); + mod_timer(&sync_cmos_timer, jiffies + 1); } static long clock_cmos_diff, sleep_start; | ||||||||||||
| Last update: 2005-03-22 13:11 [from the cache] ©2003-2008 | |||||||||||||