From owner-freebsd-hackers Thu Aug 30 8: 9: 9 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from mail.imp.ch (mail.imp.ch [157.161.1.2]) by hub.freebsd.org (Postfix) with ESMTP id 71A5D37B406; Thu, 30 Aug 2001 08:08:59 -0700 (PDT) (envelope-from mb@imp.ch) Received: from levais.imp.ch (levais.imp.ch [157.161.4.66]) by mail.imp.ch (8.11.1/8.11.1) with ESMTP id f7UF79A70908; Thu, 30 Aug 2001 17:07:09 +0200 (CEST) (envelope-from Martin.Blapp@imp.ch) Date: Thu, 30 Aug 2001 17:14:33 +0200 (CEST) From: Martin Blapp To: Bruce Evans Cc: , , , , , , , , , Subject: Re: Clock speedup on 4.X FreeBSD SMP and serverworks chipset In-Reply-To: <20010831001909.W2482-100000@besplex.bde.org> Message-ID: <20010830171101.I676-100000@levais.imp.ch> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Hi, Together with Thomas Moestel, I have found that the following patch seems to solve the gettimeofday() problem and stops the time drift: --- sys/i386/isa/clock.c Thu Aug 30 17:01:31 2001 +++ sys/i386/isa/clock.c.new Thu Aug 30 17:01:29 2001 @@ -1203,7 +1203,7 @@ high = inb(TIMER_CNTR0); count = timer0_max_count - ((high << 8) | low); if (count < i8254_lastcount || - (!i8254_ticked && (clkintr_pending || + (!i8254_ticked && (/*clkintr_pending || */ ((count < 20 || (!(ef & PSL_I) && count < timer0_max_count / 2u)) && #ifdef APIC_IO #define lapic_irr1 ((volatile u_int *)&lapic)[0x210 / 4] /* XXX XXX */ We are looking now why this happens. Bruce: I've looked once what value of apic_8254_intr and it was below 24. I'll dicuss your change with Thomas and see if that makes the same diff as our patch. Martin To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message