*BSD News Article 12944


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!howland.reston.ans.net!bogus.sura.net!udel!sbcs.sunysb.edu!stark.UUCP!gene
From: gene@stark.uucp (Gene Stark)
Newsgroups: comp.os.386bsd.bugs
Subject: Re: Excessive Interrupt Latencies
Date: 18 Mar 93 10:23:56
Organization: Gene Stark's home system
Lines: 34
Message-ID: <GENE.93Mar18102356@stark.stark.uucp>
References: <GENE.93Mar15115756@stark.stark.uucp> <1993Mar16.071007.20320@runx.oz.au>
NNTP-Posting-Host: stark.uucp
In-reply-to: bde@runx.oz.au's message of Tue, 16 Mar 93 07:10:07 GMT

Bruce Evans (bde@runx.oz.au) writes:

>I don't think there's anything like that, but there's a bug that causes
>timeout routines to run at splhigh().  splsoftclock() doesn't lower the
>priority like it should.  I've fixed the bug differently.

Thank you for pointing this out.  In case anyone is interested in a quick
fix, this can be accomplished by commenting out the following lines in
/sys/kern/kern_clock.c:

---------
		if (CLKF_BASEPRI(&frame)) {
			/*
			 * Save the overhead of a software interrupt;
			 * it will happen as soon as we return, so do it now.
			 */
			(void) splsoftclock();
			softclock(frame);
		} else
---------

This is just a hack, since a "correct" fix should be made to the icu.s
routines to make them work right.  However, if you just want to keep
nearly all timeout routines from running with all interrupts masked,
you can use the above as an interim fix.  I tested it with code for counting
the number of invocations of softclock() that occur with each mask bit set,
and commenting out the above code has the desired effect.

							Gene Stark
							stark@cs.sunysb.edu


--
							stark@cs.sunysb.edu