ACPI method _CRS should be used to identify bus numbers during initial probe
During boot the _BBN from ACPI are scanned to populate the PCI tree with bus root nodes.
Subsequently, a scan and enumeration is performed starting from bus 0 through to what ever is deemed to be maximum PCI bus number. During this scan, discovered devices are added to the device tree and initial device nodes are created. A consequence of this, is if the bus number pre-populated using the _BBN does not match any discovered devices we end up with a childless node.
These childless nodes can cause problems with libtopo which crashes when it encounters an empty root. libtopo should handle that situation better.
This issue addresses the reason for the empty root devices.
_BBN is not a reliable method for getting a bus number, a better way is to use the _CRS (current resource) ACPI method which holds the bus number actually assigned.
Updated by Paul Winder 4 months ago
The change has been tested on various Supermicro systems from them X9, X10 and X11 family of products as well as the Celestica Athena.
The change does not change PCI enumeration on running systems as long as /etc/devices/pci_unitaddr_persistent remains present. Fresh installation will use _CRS method, and removal of afore mentioned file will cause the PCI buses to be re-evaluated.
Updated by Electric Monk 4 months ago
- Status changed from In Progress to Closed
- % Done changed from 80 to 100
commit 3349e36e2896c71806ddaed726d65171a3045358 Author: Paul Winder <firstname.lastname@example.org> Date: 2019-11-04T21:09:45.000Z 11790 ACPI method _CRS should be used to identify bus numbers during initial probe Reviewed by: Andrew Stormont <email@example.com> Reviewed by: Toomas Soome <firstname.lastname@example.org> Reviewed by: Igor Kozhukhov <email@example.com> Reviewed by: Randy Fishel <firstname.lastname@example.org> Approved by: Dan McDonald <email@example.com>