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)
#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.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to email@example.com
Please read the FAQ at http://www.tux.org/lkml/