> 2.1.69 and 2.1.70 refuse to recognize my root device, an IDE hard drive.
[...]
> The 'unable to get irq 255' message is very suspicious -- I suspect that
> something is putting -1 into a byte somewhere...
I've narrowed this down to the function ide_setup_pci_device in the file
ide-dma.c (kernel 2.1.70):
--------
__initfunc(static void ide_setup_pci_device (byte bus, byte fn, unsigned
int bmiba, ide_pci_device_t *d))
{
unsigned int port, at_least_one_hwif_enabled = 0;
unsigned short base = 0, ctl = 0;
byte tmp = 0, pciirq = 0;
ide_hwif_t *hwif;
if (pcibios_read_config_byte(bus, fn, 0x3c, &pciirq))
pciirq = 0; /* probe later if not set */
for (port = 0; port <= 1; ++port) {
---------
The pcibios_read_config_byte() call is returning PCIBIOS_SUCCESSFUL and
putting 0xFF into pciirq. This ultimately causes a panic as the kernel
cannot allocate IRQ 255 and thus cannot mount the root device.
I'm not a PCI hacker; I don't know what the above call is supposed to
return, or whether 0xFF is a valid error code that we are supposed to be
checking for, or what. But the code above is currently broken.
--Scott
@ @
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-oOO-(_)-OOo-=-=-=-=-=
C. Scott Ananian: cananian@lcs.mit.edu / Declare the Truth boldly and
Laboratory for Computer Science/Crypto / without hindrance.
Massachusetts Institute of Technology /META-PARRESIAS AKOLUTOS:Acts 28:31
-.-. .-.. .. ..-. ..-. --- .-. -.. ... -.-. --- - - .- -. .- -. .. .- -.
PGP key available via finger and from http://www.pdos.lcs.mit.edu/~cananian