Date: Thu, 17 Sep 1998 11:12:37 +0200 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: John Hay <jhay@mikom.csir.co.za> Cc: mike@smith.net.au, current@FreeBSD.ORG, bde@FreeBSD.ORG Subject: Re: Death by SIGXCPU (problems with our clock code) Message-ID: <9081.906023557@critter.freebsd.dk> In-Reply-To: Your message of "Sat, 17 Sep 1998 11:08:56 %2B0200." <199809170908.LAA06018@zibbi.mikom.csir.co.za>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <199809170908.LAA06018@zibbi.mikom.csir.co.za>, John Hay writes:
>So, do you have better test code that is available, or should I just use
>Mike's? I would really also like to find out what the problem is, because
>I have just about given up trying to get PPS working properly from sio
>interrupts on 486 and SMP machines. On my two machines that use the 8254
>for the timecounter I see forward jumps.
No, my code relies on a special hardware buffer for storing stuff, by
all means use mikes code and see if you find something, but please
also implement something in the two get_timecount() functions, that
is the most important place to look.
>
>John
>--
>John Hay -- John.Hay@mikom.csir.co.za
>
>>
>> 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
>>
>
>
>
--
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?9081.906023557>
