Re: PCI primary peer detection failure with 2.2.3

Martin Mares (mj@atrey.karlin.mff.cuni.cz)
Fri, 19 Mar 1999 16:58:55 +0100


Hi,

> The motherboard is a quad PPro intel ALDER OEM.
>
> Reversing one of the new hunks of code in pcibios_fixup_peer_bridges() allows
> the machine to boot again (it panics because the internal SCSI controller is
> on PCI bus 1 which it doesn't find under vanilla 2.2.3).

Please try the patch below, it should help.

> However, it does look accidental that the host bridge for primary peer bus 1
> was ever detected in the first place. Should the Orion chipset be treated as
> an exception like the 450NX?

It definitely should be treated as an exception, since the peer bridge
detection code is just heuristics to find the most common cases on unknown
chipsets. I'll try to write it during the weekend.

Have a nice fortnight

-- 
Martin `MJ' Mares   <mj@ucw.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"Bad command or operator..."

--- arch/i386/kernel/bios32.c.mj Fri Mar 19 16:57:09 1999 +++ arch/i386/kernel/bios32.c Fri Mar 19 16:57:30 1999 @@ -997,15 +997,15 @@ l != 0x0000 && l != 0xffff) { #ifdef CONFIG_PCI_BIOS if (pci_bios_present) { - int succ, idx = 0; + int err, idx = 0; u8 bios_bus, bios_dfn; u16 d; pcibios_read_config_word(n, i, PCI_DEVICE_ID, &d); DBG("BIOS test for %02x:%02x (%04x:%04x)\n", n, i, l, d); - while ((succ = pci_bios_find_device(l, d, idx, &bios_bus, &bios_dfn)) && + while (!(err = pci_bios_find_device(l, d, idx, &bios_bus, &bios_dfn)) && (bios_bus != n || bios_dfn != i)) idx++; - if (!succ) + if (err) break; } #endif

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