Skip site navigation (1)Skip section navigation (2)
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>