Bug 84761 - LSI controller not found when specifying pci=assign-busses
Summary: LSI controller not found when specifying pci=assign-busses
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: PCI (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: drivers_pci@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-09-17 14:48 UTC by David Milburn
Modified: 2015-01-28 03:47 UTC (History)
3 users (show)

See Also:
Kernel Version: linux-3.17.0-rc2
Subsystem:
Regression: No
Bisected commit-id:


Attachments
Patch to change pcibios_assign_all_busses check in pci_scan_bridge() (614 bytes, text/plain)
2014-09-17 14:48 UTC, David Milburn
Details
output of lspci -vv (65.74 KB, text/x-log)
2014-09-17 14:52 UTC, David Milburn
Details
Successful boot without pci=assign-busses (80.62 KB, text/plain)
2014-09-17 17:49 UTC, David Milburn
Details
Console output when using pci=assign-busses (46.62 KB, text/plain)
2014-09-17 17:52 UTC, David Milburn
Details

Description David Milburn 2014-09-17 14:48:40 UTC
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:
Comment 1 David Milburn 2014-09-17 14:52:28 UTC
Created attachment 150661 [details]
output of lspci -vv
Comment 2 David Milburn 2014-09-17 17:49:23 UTC
Created attachment 150721 [details]
Successful boot without pci=assign-busses
Comment 3 David Milburn 2014-09-17 17:52:36 UTC
Created attachment 150731 [details]
Console output when using pci=assign-busses

Note You need to log in before you can comment on or make changes to this bug.