Messages in this thread Patch in this message | | | From | Michal Jaegermann <> | Subject | Fix for non-booting Alpha with BRIDGE_OTHER device | Date | Wed, 13 Sep 2000 14:55:44 -0600 (MDT) |
| |
I found by an experiment that an Alpha with a device which provides its own PCI bridge, and if that device is on a PCI bus 0, will stop booting right after "Partition check" messages. The only way out is through a power switch. One can still boot if the device in question is plugged in a slot on a PCI bus 1.
That particular hardware which revealed the problem is in fact SCI board from Scali ( http://www.scali.com ) used in a cluster communication and Scali provides a fix which makes machines bootable again.
Here it is recreated against linux-2.2.18pre6. It will actually apply to a wide range of kernels but with a possible line offsets noise.
--- linux-2.2.18p/arch/alpha/kernel/bios32.c.orig Wed Jun 7 15:26:42 2000 +++ linux-2.2.18p/arch/alpha/kernel/bios32.c Wed Sep 13 14:08:05 2000 @@ -828,6 +828,7 @@ for (dev = bus->devices; dev; dev = dev->sibling) { if ((dev->class >> 16 != PCI_BASE_CLASS_BRIDGE) || + (dev->class >> 8 == PCI_CLASS_BRIDGE_OTHER) || (dev->class >> 8 == PCI_CLASS_BRIDGE_PCMCIA)) { disable_dev(dev); } @@ -840,6 +841,7 @@ for (dev = bus->devices; dev; dev = dev->sibling) { if ((dev->class >> 16 != PCI_BASE_CLASS_BRIDGE) || + (dev->class >> 8 == PCI_CLASS_BRIDGE_OTHER) || (dev->class >> 8 == PCI_CLASS_BRIDGE_PCMCIA)) { layout_dev(dev); } @@ -1081,6 +1083,7 @@ */ for (dev = pci_devices; dev; dev = dev->next) { if ((dev->class >> 16 == PCI_BASE_CLASS_BRIDGE) && + (dev->class >> 8 != PCI_CLASS_BRIDGE_OTHER) && (dev->class >> 8 != PCI_CLASS_BRIDGE_PCMCIA)) continue; It indeed makes possible to boot regardles of a slot with SCI in it and in tests on various Alphas _without_ that device does not seem to harm anything - which is not a big surprise as otherwise PCMCIA would likely be a problem too.:-) Any comments from those who sleep with PCI specs under pillows? Should not that be included into standart kernels? In arch/sparc64/kernel/psycho.c exists already a code which seems to be somewhat related.
Michal michal@harddata.com
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |