[Top] [All Lists]

Re: Hanging.

To: Alex deVries <>
Subject: Re: Hanging.
From: "William J. Earl" <>
Date: Fri, 1 May 1998 12:45:48 -0700
Cc: SGI Linux <>
In-reply-to: <>
References: <> <>
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>