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.