*BSD News Article 10576


Return to BSD News archive

Received: by minnie.vk1xwt.ampr.org with NNTP
	id AA325 ; Sun, 31 Jan 93 14:03:03 EST
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!howland.reston.ans.net!zaphod.mps.ohio-state.edu!cs.utexas.edu!qt.cs.utexas.edu!news.Brown.EDU!stanley.cis.Brown.EDU!tim
From: tim@stanley.cis.Brown.EDU (Timothy Miller)
Newsgroups: comp.unix.bsd
Subject: [386BSD] Any idea why IRQ 12 would not be getting through?
Date: 30 Jan 1993 23:17:51 GMT
Organization: Brown University
Lines: 42
Distribution: world
Message-ID: <1kf2avINN26m@cat.cis.Brown.EDU>
NNTP-Posting-Host: stanley.cis.brown.edu

I have an IBM streaming tape adapter card taken from an RT (where it works). It
has io addresses at 1e8-1ef and at 6f4 (the interrupt reset address), and sends
IRQ 12. To be as sure as possible that I'm not programming the card wrong, I've
taken the driver source from the RT and ported it to BSD. As far as I can tell,
the card and drive are working perfectly with the exception that my interrupt
routine is not getting called. (The reason I think everything else is working is
that I added a timeout to keep calling the interrupt routine pretending that an
interrupt has occurred. But this is about 30 times slower than it should be,
because either I poll very very often and load the cpu or I don't poll often
enough, and there are delays before the cpu recognizes that a block has been
successfully read/written etc.) The changes to conf.c and my machine
configuration file are both based on the wt and wd drivers. Using ddb, I can
tell that IRQ12 is not masked off in either the cpl or imen. Since the code for
loading the vector (in isa.c) hasn't been touched by me, and correctly loads the
vectors for other drivers, even high-IRQ ones, I assume that that is working
correctly too. The card isn't returning any errors or anything, and the reset
instructions and interrupt enable stuff is all being performed correctly, and
the same as what it does on the RT. The vector statement on the driver line in
my config file names the right function, this function is not defined anywhere
else, and as far as I can tell, there aren't any namespace conflicts (I'm
calling this driver "st", vector stintr, etc.). The driver line also names the
right IRQ, 12. I know stintr isn't being called because the first thing it does
is printf, and also I've set a ddb breakpoint for it. Does anyone have any idea
why I'm not getting this IRQ12? Is there something strange going on I haven't
found? Unfortunately there are no jumpers or anything reconfigurable on the
card, and I don't have any means of looking at the hardware IRQ12 trace to see
if it's actually being raised, nor do I have an in-circuit debugger. I have
tried moving the card to a different slot, moving it while it's in the slot,
etc, looking for bad connections, but to no avail. If noone knows about anything
strange I'm overlooking, does anyone have any ideas about how to proceed trying
to debug this? Has anyone out there successfully gotten a card on IRQ12 to work?
Does anyone know if there's anything strange with IRQ12 on my machine (which is
a Gateway 2000 4DX-33V with 1 340M IDE hard drive, the two floppies, a tower
case, the ATI Ultra Pro VLB video card, and nothing else in the main unit. I
checked the video card, and none of the IRQ jumpers are turned on, so that's not
it. I've checked the Gateway manual, but it doesn't list anything at any of
the tape drive adapter's io addresses or IRQ. I don't see anything else in
my machine config for the addresses or IRQ (that's not commented out, at least).
I have previously gotten an RT card to work in my computer (an Ungerman-Bass
ethernet card, with a driver I wrote for 386BSD), so it wouldn't seem to be
a bus incompatibility. Help?
   Tim