On 30.11.2017 23:42, Bjorn Helgaas wrote:
00:11.0 claims to be a PCIe Root Port leading to [bus 05-06]. That
means there's a Link (presumably this A-Link II Express thing), and the
downstream end of the Link *should* be a PCIe Upstream Port on bus 05,
but no such device is visible. I suppose the SB600 does implement
some sort of PCIe Port there, but keeps it invisible to software, and
at the same time, contains an invisible bridge that connects the Link
to all the conventional PCI devices on bus 05.
When we scan bus 05, we do this:
pci_scan_child_bus_extend(bus=05)
for (devfn = 0; devfn < 0x100; devfn += 8)
pci_scan_slot(05, 00.0)
pci_scan_single_device
pci_scan_device(05, 00.0) # fails; no 05:00.0
pci_scan_slot(05, 01.0)
only_one_child(bus=05)
parent = 00:11.0
pci_pcie_type(00:11.0) == ROOT_PORT # returns true
Since only_one_child() sees that 00:11.0 is a Root Port, we give up
before we even get to the PCI_SCAN_ALL_PCIE_DEVS test.
I *think* something like the patch below should make this work if you
use the "pci=pcie_scan_all" parameter. We have some x86 DMI quirks
that set PCI_SCAN_ALL_PCIE_DEVS automatically. I don't know how to do
something similar on powerpc, but maybe you do?
Hi Bjorn,
I tested your new patch today. It boots with the boot argument "pci=pcie_scan_all". Well done! :-)
It doesn't boot without the boot argument "pci=pcie_scan_all".
Many thanks for your help.
Cheers,
Christian