[PATCH] PCI bus detection bug

Chris Frantz (frantzc@insync.net)
Thu, 18 Feb 1999 13:45:05 -0600 (CST)


Hello,

The PCI code in Linux-2.2 doesn't seem to find peer busses very well,
specifically when they are not numbered sequentially. I've seen this
problem on a few different Compaq systems with hot-plug pci. The fix
is rather trivial:

--- linux/arch/i386/kernel/bios32.c.orig Thu Feb 18 00:45:56 1999
+++ linux/arch/i386/kernel/bios32.c Thu Feb 18 00:46:11 1999
@@ -985,8 +985,6 @@
l == PCI_CLASS_BRIDGE_HOST)
cnt++;
}
- if (cnt-- <= 0)
- break;
if (found) {
printk("PCI: Discovered primary peer bus %02x\n", n);
b = kmalloc(sizeof(*b), GFP_KERNEL);

I'm a bit curious about this code. Although comments at the top of
pcibios_fixup_peer_bridges seem to suggest that a lot of BIOSes will
number busses using the first free value they can find (probably resulting
in busses being numbered sequentially), the comments also seem to
indicate that this behavior is not required. Yet this code seems to
enforce sequentially numbered peer busses...

I am by no means a PCI expert, so perhaps someone could enlighten me?

Regards,
--Chris

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