From owner-freebsd-stable@FreeBSD.ORG Mon May 21 00:32:32 2007 Return-Path: X-Original-To: stable@freebsd.org Delivered-To: freebsd-stable@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 727DE16A469 for ; Mon, 21 May 2007 00:32:32 +0000 (UTC) (envelope-from dan@dan.emsphone.com) Received: from dan.emsphone.com (dan.emsphone.com [199.67.51.101]) by mx1.freebsd.org (Postfix) with ESMTP id 3833113C468 for ; Mon, 21 May 2007 00:32:32 +0000 (UTC) (envelope-from dan@dan.emsphone.com) Received: (from dan@localhost) by dan.emsphone.com (8.14.1/8.13.8) id l4KNxA2b021772; Sun, 20 May 2007 18:59:10 -0500 (CDT) (envelope-from dan) Date: Sun, 20 May 2007 18:59:10 -0500 From: Dan Nelson To: Victor Balada Diaz Message-ID: <20070520235910.GC13345@dan.emsphone.com> References: <20070520162630.GA1481@pato.euesrg02.net> <20070520191123.GR1164@turion.vk2pj.dyndns.org> <20070520193808.GA857@pato.euesrg02.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070520193808.GA857@pato.euesrg02.net> X-OS: FreeBSD 6.2-STABLE User-Agent: Mutt/1.5.15 (2007-04-06) Cc: Peter Jeremy , stable@freebsd.org Subject: Re: RTC clock doesn't generate interrupts X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 May 2007 00:32:32 -0000 In the last episode (May 20), Victor Balada Diaz said: > On Mon, May 21, 2007 at 05:11:23AM +1000, Peter Jeremy wrote: > > On 2007-May-20 18:26:30 +0200, Victor Balada Diaz wrote: > > >I have a server with FreeBSD 6.2 that is not generating RTC IRQs. > > >When the system boots everything it's working fine and I get 128 > > >interrupts per second but after a few hours the system starts > > >losing RTC interrupts. If I enable powerd it happens much faster > > >than without it. > > > > The RTC has a "feature" that if you ever lose an RTC interrupt > > (because the interrupt handler wasn't called fast enough), you > > don't get any more interrupts because the RTC knows it has an > > interrupt pending and so doesn't generate any more interrupts. > > > > I have also bumped into this problem whilst trying to work around a > > problem with a TurionX2 CPU. I just got the correct fix to work > > and ignored the work-around. > > > > I did find that you can restart the RTC interrupts by setting > > machdep.adjkerntz (you can leave the value the same, it's the > > assignment that's important). > > Thanks for your fast reply! > > I tried the machdep.adjkerntz trick and didn't work very well. > If i'm on 0 irqs per second after changing the value i get 1 > irq per second. If i'm on 20 i get 21, and so on. > > Do you know of any other workaround/patch that i can try? Here's what I use on a couple of Dell 2400's. I put it in cron to fire every 5 minutes: #! /bin/sh # fixrtc - kick the RTC if it stops running # get the interrupt rate for the stat clock over one second getticks() { ( vmstat -i ; sleep 1 ; vmstat -i ) | awk '/rtc/ { if (sum) sum+=$3; else sum-=$3 } END { print sum }' } ticks=$( getticks ) # It should be firing at 128 hz. If not, kick it if [ $ticks -lt 64 ] ; then echo "Stat clock has died. Attempting to reset." echo /etc/rc.d/ntpd stop echo /usr/sbin/ntpdate -b pool.ntp.org echo /etc/rc.d/ntpd start echo echo "RTC interrupt rate is now $(getticks)" fi -- Dan Nelson dnelson@allantgroup.com