linux-mips
[Top] [All Lists]

Re: Hanging.

To: Alex deVries <adevries@engsoc.carleton.ca>
Subject: Re: Hanging.
From: "William J. Earl" <wje@fir.engr.sgi.com>
Date: Fri, 1 May 1998 12:45:48 -0700
Cc: SGI Linux <linux@cthulhu.engr.sgi.com>
In-reply-to: <Pine.LNX.3.95.980501153605.22853E-100000@lager.engsoc.carleton.ca>
References: <199805011929.MAA23116@fir.engr.sgi.com> <Pine.LNX.3.95.980501153605.22853E-100000@lager.engsoc.carleton.ca>
Sender: owner-linux@cthulhu.engr.sgi.com
Alex deVries writes:
 > 
 > On Fri, 1 May 1998, William J. Earl wrote:
 > >      Is this an R4000?  If so, it might be the count/compare erratum, if
 > > the linux kernel does not have the workaround for it yet.  (I haven't
 > > checked the linux sources.)
 > 
 > This is an R4600.  How would I check if there were that patch applied?

     The problem I have in mind cannot occur on an R4600.  The modification
is to the routine which fetches $count.  On the R4000, if you are depending
on the $compare match interrupt, you have to check for the possibility
that $count equalled $compare when you fetched it, since that causes
the interrupt to not happen.  In that case, you have to fake the
interrupt in some way, or have to wait for $count to wrap (about 84 seconds
at 100 MHZ).  IRIX just checks to see if the fetched copy of $count
is close to a shadow copy $compare.  If it is, and if the clock interrupt
request bit is off (this being done with interrupts disabled), we
set $compare a little head of the current $count and spin until the
interrupt bit goes on (with some care to avoid getting stuck if we
lose the race in terms of setting $compare ahead of $count).  Again,
all this only applies to the R4000, not to the R4400, R4600, or R5000.

<Prev in Thread] Current Thread [Next in Thread>