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