Date: Thu, 17 Sep 1998 09:37:22 +0200 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: Mike Smith <mike@smith.net.au> Cc: current@FreeBSD.ORG, bde@FreeBSD.ORG Subject: Re: Death by SIGXCPU (problems with our clock code) Message-ID: <8620.906017842@critter.freebsd.dk> In-Reply-To: Your message of "Wed, 16 Sep 1998 17:55:15 PDT." <199809170055.RAA01288@dingo.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Mike, >Since nobody else has taken up my suggestion to instrument the code to >find out what's going on, I've shouldered the cross. I have my version here instrumented far more than what you've done, and I have two and a half extra kinds of timecounting hardware running here in my lab but I have not been able to catch it in flagrante delico yet, leading me to conclude that some hardware is involved. The check in microtime and nanotime are strictly not valid. The reason is that both microtime and nanotime are reentrant now, so you might take an interrupt in the middle of it. The reentrancy could possibly be a problem if some spl*() are missing somewhere else, or if logic is flawed in the code. You can test that hypothesis by splalot() around the [get]{micro|nano}[run]time() functions. I am puzzeled about the negative fractions and I think they are the most important clue. tco_forward() does not do any sanity checks on the timecounter, so if there is some trouble with the hardware (or our method of accessing it), that would shine straight through. Can you please add a check to the i8254/tsc get_timecount functions (in isa/clock.c) which report if the count goes backwards or is bigger than (1/HZ + epsilon) seconds ? What machine is this on ? What is your timecounter TSC/i8254 ? BIOS settings ? Bruce: You mentioned that some i8254 cloneoids didn't implement the latch correctly any references to that ? Poul-Henning -- Poul-Henning Kamp FreeBSD coreteam member phk@FreeBSD.ORG "Real hackers run -current on their laptop." "ttyv0" -- What UNIX calls a $20K state-of-the-art, 3D, hi-res color terminal To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8620.906017842>