I'm looking for how kernel to do PCI/PCIe enumeration and BAR assigning.
I thought that kernel will assign PCI base addresses of BAR when start-up, but when I tried pci earlydump (before kernel initial PCI subsystem) to see the BARs valuse, I found all base addresses are already assigned !? Does it mean that BIOS do PCI/PCIe enumeration and BAR assigning? How BIOS know each pci devices base addresses and assign these without conflict?
And if so, how the embedded system(without BIOS ) to enumerate and assign base address for PCI/PCIe devices?
By the way, my PC is Ubuntu 14.04.1 LTS (x86_64)