APCI method _CRS should be used to identify bus numbers during initial probe
Review Request #2379 — Created Oct. 9, 2019 and submitted — Latest diff uploaded
During PCI probe PCI roots are discovered using _BBN. _BBN is not always reliable and may have incorrect values with the result that childless PCI root entries in /devices are created. In turn this can cause issues with some user land libraries, such as libtopo.
The correct ACPI method to use is _CRS.
I have tested on variants of Supermicro servers and a Celestica server.
Denis Kozadaev (email@example.com) has tested it on a Lenovo laptop.
On the Celestica it shows correctly enumerated root devices (and no empty ones). Egls /devices agpgart pci@14,0:intr pci@5f,0 pci@73,0:intr agpgart:agpgart pci@14,0:reg pci@5f,0:devctl pci@73,0:reg fw pci@34,0 pci@5f,0:intr pci@9b,0 options pci@34,0:devctl pci@5f,0:reg pci@9b,0:devctl pci@0,0 pci@34,0:intr pci@64,0 pci@9b,0:intr pci@0,0:devctl pci@34,0:reg pci@64,0:devctl pci@9b,0:reg pci@0,0:intr pci@3d,0 pci@64,0:intr pseudo pci@0,0:reg pci@3d,0:devctl pci@64,0:reg pseudo:devctl pci@14,0 pci@3d,0:intr pci@73,0 scsi_vhci pci@14,0:devctl pci@3d,0:reg pci@73,0:devctl scsi_vhci:devctl
Ideally I would like others to try the patch on different hardware.