[parisc-linux] LBA PCI : avoid crash when pluging a pcmcia bridge
Matthew Wilcox
matthew at wil.cx
Wed Nov 15 05:23:52 MST 2006
On Wed, Nov 15, 2006 at 12:25:06PM +0100, Guy Martin wrote:
> It looks like pci_find_bus() return non null for the pcmcia bridge.
>
> if (pci_find_bus(pci_domain_nr(b), bus)) {
> /* If we already got to this bus through a different bridge, ignore it */
> pr_debug("PCI: Bus %04x:%02x already known\n", pci_domain_nr(b), bus);
> goto err_out;
> }
Oh. So we got a bus numbering conflict. Yay.
> With PCI_DEBUG and some more printk() I can see this in my dmesg :
>
> PCI: Found 0000:01:06.0 [1180/0475] 000607 02
> PCI: Calling quirk 102564c8 for 0000:01:06.0
> PCI: Fixups for bus 0000:01
> PCI: Scanning behind PCI bridge 0000:01:06.0, config 000000, pass 0
> PCI: Scanning behind PCI bridge 0000:01:06.0, config 000000, pass 1
> PCI: Bus scan for 0000:01 returning with max=05
> PCI: Enabling bus mastering for device 0000:01:06.0
> PCI: Bus 0000:02 already known
> PCI: Reached err_out:
>
> Let me know if you need anything else.
I bet a plain lspci will show a bus 2 elsewhere (probably one of the
root busses). ie: we need to renumber all our busses, just like we do
for Dino. Either that, or start using PCI domains, but I'd rather not
go there just yet.
More information about the parisc-linux
mailing list