SMP "inb_p" hangs -> huh?

From: Valentijn Sessink (valentyn@nospam.openoffice.nl)
Date: Sat Mar 18 2000 - 17:47:39 EST


Hi all,

while trying to track down a strange freeze, I found that the main
reason for the immediate hang is a never returning inb(...) instruction
from ide.c:

startstop = ide_error(drive, "irq timeout", GET_STAT());
(around line 1460)
The GET_STAT() never returns. Now I'm stuck. Why does a simple inb
freeze a machine?
Could anyone with knowledge of hardware and/or SMP please give me a hint
where to go looking?

This is kernel 2.2.15pre15 with ide.2.2.15pre15, on the infamous BP6
motherboard (Dual Celeron 466, 128Mb, 15G, Epic100 NIC and Matrox G200
VGA). I'm not asking you to debug this rotten motherboard, I only hope
that there's some hardware guru out there that could suggest what's
wrong if a simple "inb" instruction locks the machine.

Some extra information just in case you need it:

what I did was:

printk("going to try GET_ERR now... ");
valentijn_junk=GET_STAT();
printk("... hmm. Never thought we'd come this far.\n");
startstop = ide_error(drive, "irq timeout", valentijn_junk);

... and even tried to put another "printk" before GET_STAT, just to make
a bit more sure that it wasn't just a silly timing issue.
I also added a REALLY_FAST_IO definition in ide.h just to check if it
wasn't the 0x80 "void" instructions in inb_p that messed things up.

Things I also tried: GET_ERR() before GET_STAT (just to make sure that
it's not just the status register, but get_err does not return either),
then I also tried to just supply a "busy" status (valentijn_err=0x80)
and continue, but that will just hang the machine later on (can track
it, but it definately hangs with the next GET_STAT, or if I force it to
reset, it hangs just when it tries to find out if the reset succeeded)

Best regards,

Valentijn

--

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



This archive was generated by hypermail 2b29 : Thu Mar 23 2000 - 21:00:25 EST