Re: PROBLEM: Devices behind PCI Express-to-PCI bridge not mapped

Linus Torvalds
2005-06-04T15:15:26Z

On Sat, 4 Jun 2005, Andreas Koch wrote:
>
> Actually, I tried that already. But I didn't get any usable info from
> the oops and GDB (`list *pci_setup_bridge+0x1a2' shows an include file,
> not a line in the function) . I'll make another attempt tomorrow when
> I am more awake :-)

The oops is because we normally don't even assign but->resource[2] for the
root bridge. The following seems to fix the oops, but it makes a normal PC
totally unbootable, so that doesn't help you. I didn't have a serial
console hooked up, so I didn't get the logs. Somebody who has, and enables
CONFIG_PCI_DEBUG, can you send me the output?

Linus

diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c
--- a/arch/i386/pci/common.c
+++ b/arch/i386/pci/common.c
@@ -164,6 +164,7 @@ static int __init pcibios_init(void)
if ((pci_probe & PCI_BIOS_SORT) && !(pci_probe & PCI_NO_SORT))
pcibios_sort();
#endif
+ pci_assign_unassigned_resources();
return 0;
}

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -908,6 +908,7 @@ struct pci_bus * __devinit pci_scan_bus_
b->number = b->secondary = bus;
b->resource[0] = &ioport_resource;
b->resource[1] = &iomem_resource;
+ b->resource[2] = &iomem_resource;

b->subordinate = pci_scan_child_bus(b);