Messages in this thread | | | Subject | Re: FlashPoint card hanging system (BT-950) | Date | Sat, 2 Oct 1999 16:34:14 -0500 (CDT) | From | (William Lash) |
| |
> > William Lash spake, saying: > > I have gotten a bit of help from Mylex Tech support. Jo suggested > > that I try updating the card BIOS to the latest version 1.41i. > > Hm, my card is ~ 1.5 yrs old, and it's always been 1.41i ... > > > I have done that, and while I still get a couple of errors of the same > > type (stuck in the state BUS_FREE ) when I first start up, if I get > > past that (by mounting and unmounting a CD in my CDRW drive several > > times), it seems to work fine. > > Ooh, you lobster; I still get a kernel panic when it tries to mount. > Out of curiosity, is your buslogic code compiled in or a module? >
Currently I have it as a module, and I manually insert it using modprobe when I am testing it. I used to have it compiled in, but this lead to several lockups when booting.
> > I think I will try adding delays where Leonard suggested, and see > > if it takes the problem away completely. > > Let me (us) know how it goes. I may have to resort to using IDE to > get my new mobo/cpu running, except that Western Digital just recalled > a million harddrives (check to see if yours is one!), and my source > doesn't have any ... :-( >
I tried Leonard's suggestions of adding a udelay(10) to the top of the ISR, and adding delays to the OS_* macros. Adding the udelay(10) at the top of the interrupt service routine did not seem to help, however adding a udelay(2) to each of the OS_* macros seems to take the problem away completely for me. I plan on doing more rigorous testing later (it was about 3:30am when I tried it, so it may have been a sleep deprived, alcohol induced, halucination).
I am not competely convinced that the way I added the udelay() call to the macros is 100% correct. I changed
#define OS_InPortByte(port) inb(port)
to:
#define OS_InPortByte(port) (udelay(2),inb(port))
I originally tried a semicolon between the two functions, but this caused the compile to fail (which makes sense since the macro may be used in places where a semicolon can't go). Using the comma seemed to work ok, and if I read my C Books correctly, this should work ok.
Later on I will try changing those to udelay(1) instead of udelay(2), and I'll try to really test it hard.
Bill Lash welash@xnet.com
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |