Re: FlashPoint card hanging system (BT-950)

William Lash (welash@xnet.com)
Sat, 2 Oct 1999 16:34:14 -0500 (CDT)


>
> 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/