Created attachment 150651 [details] Patch to change pcibios_assign_all_busses check in pci_scan_bridge() When booting with kernel command line option "pci=assign-busses", LSI controller is no longer found. 05:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1068E PCI-Express Fusion-MPT SAS (rev 08) It seems the problem is in pci_scan_bridge (drivers/pci/probe.c): [ 2.542563] PCI_READ_BRIDGE_BASES: [ 2.545953] PCI_SCAN_BRIDGE: [ 2.548823] scanning [bus 01-01] behind bridge, pass 0 [ 2.553947] PCI_SCAN_BRIDGE: [ 2.556818] scanning [bus 05-05] behind bridge, pass 0 <=========PROBLEM [ 2.561942] PCI_SCAN_BRIDGE: [ 2.564812] scanning [bus 06-06] behind bridge, pass 0 [ 2.569936] PCI_SCAN_BRIDGE: [ 2.572806] scanning [bus 03-03] behind bridge, pass 0 [ 2.577930] PCI_SCAN_BRIDGE: [ 2.580800] scanning [bus 02-02] behind bridge, pass 0 [ 2.585923] PCI_SCAN_BRIDGE: [ 2.588793] scanning [bus 04-04] behind bridge, pass 0 If I change the pass 0 check from !pcibios_assign_all_busses() to pcibios_assign_all_busses() it finds the LSI controller; however, it looks like pci_scan_bridge has checked !pcibios_assisng_all_bussses() for a very long time. (changed code in pci_scan_bridge, causes driver to head down that first path) if ((secondary || subordinate) && pcibios_assign_all_busses() && !is_cardbus && !broken) { [ 2.560225] PCI_SCAN_BRIDGE: secondary 1 subordinate 1 is_cardbus 0 broken 0 [ 2.567252] PCI_SCAN_BRIDGE: !pcibios_assign_all_busses() 0 . . [ 2.849864] scanning [bus 05-05] behind bridge, pass 0 <=====SCANNING [ 2.854988] PCI_SCAN_BRIDGE: CHECKING FOR ASSIGN_ALL_BUSSES [ 2.860544] PCI_SCAN_BRIDGE: secondary 5 subordinate 5 is_cardbus 0 broken 0 [ 2.867572] PCI_SCAN_BRIDGE: !pcibios_assign_all_busses() 0 [ 2.873126] PCI_SCAN_BRIDGE: ASSIGN_ALL_BUSSES child (null) [ 2.879546] PCI_ADD_NEW_BUS busnr 5: [ 2.883109] PCI_ALLOC_CHILD_BUS: [ 2.886327] PCI_SET_BUS_SPEED: [ 2.889407] PCI_BUS_INSERT_BUSN_RES: [ 2.892971] PCI_SCAN_CHILD_BUS: [ 2.896100] PCI_SCAN_CHILD_BUS: scanning bus [ 2.900357] PCI_SCAN_SLOT: [ 2.903053] PCI_SCAN_SINGLE_DEVICE: [ 2.906529] PCI_SCAN_DEVICE: devfn 0 [ 2.910093] PCI_BUS_READ_DEV_VENDOR_ID: devfn 0 [ 2.914608] PCI_ALLOC_DEV: [ 2.917305] PCI_SETUP_DEVICE: [ 2.920262] SET_PCIE_PORT_TYPE: =====DEVICE FOUND BELOW===== [ 2.923399] pci 0000:05:00.0: [1000:0058] type 00 class 0x010000 [ 2.923401] [1000:0058] type 00 class 0x010000 [ 2.927841] pci 0000:05:00.0: reg 0x10: [io 0xec00-0xecff] [ 2.927852] pci 0000:05:00.0: reg 0x14: [mem 0xde2ec000-0xde2effff 64bit] [ 2.927863] pci 0000:05:00.0: reg 0x1c: [mem 0xde2f0000-0xde2fffff 64bit] [ 2.927877] pci 0000:05:00.0: reg 0x30: [mem 0xde100000-0xde1fffff pref] [ 2.927879] PCI_DEVICE_ADD:
Created attachment 150661 [details] output of lspci -vv
Created attachment 150721 [details] Successful boot without pci=assign-busses
Created attachment 150731 [details] Console output when using pci=assign-busses