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
  [EMAIL PROTECTED]

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to