Subject: Re: le broken in -current on VS3100
To: Henry R. Bent <Henry.Bent@oberlin.edu>
From: Michael L. Hitch <mhitch@lightning.msu.montana.edu>
List: port-vax
Date: 04/02/2007 12:57:33
On Sun, 1 Apr 2007, Michael L. Hitch wrote:

>> Any ideas?
>
>  I'm seeing the same thing with le0 on a 4000/VLC with -current from a few 
> hours ago.
>
>  I had built a kernel with sources from around March 10 or 12 that was 
> working.  I had thought maybe the gcc changes for shared libraries might have 
> caused it, but it may have been from some earlier change if my problem is the 
> same thing as yours.  I haven't been able to spot any changes that might 
> cause this though.

   I've narrowed down the problem to between March 12 and March 13.  I 
still can't see what change could have caused this problem, but I think I
know what the problem is.

   I had some debug stuff left over from when I was trying to figure out
the problem with a graphics console on the 4000/60, and added a little 
more.  The problem appears to be that something is changing the IPL to 
IPL_VM during the match for le0.  In vsbus_search(), scb_vecref() is 
called to clear the vector ref, and it sets IPL to 0.  After the 
config_match() call when checking the le0 device, the IPL is at IPL_VM.
I suspect something that le_vsbus_match() does while checking for the 
presence of the le device is changing the IPL and leaving it at IPL_VM.
After config_match() returns, the intreq register has the interrupt 
request set, and intmsk is set to enable the interrupt.  Since IPL is at 
IPL_VM, the interrupt doesn't occur.

   Prior to the changes between the 12th and 13th, the IPL at that point 
was 0, so the interrupt occurred and the vector information was obtained.

--
Michael L. Hitch			mhitch@montana.edu
Computer Consultant
Information Technology Center
Montana State University	Bozeman, MT	USA