On Tue, Feb 11, 2020 at 01:43:16PM +0000, Nicholas Johnson wrote: > If the BIOS assigned the resources with different packing than what the > kernel would do, then the rescan may not fit into the space. You can try > pci=realloc,nocrs if you have not already. Your system looks like it is > ARM64 so you cannot use pci=nocrs, unfortunately. "pci=nocrs" is a poor workaround for BIOS and Linux bugs. It is guaranteed to break hot-add on multi-host bridge systems because _CRS is what tells us what resources go to each bridge. Even on single-bridge systems "pci=nocrs" is dangerous because it may cause Linux to assign resources that aren't routed to PCI or are being used by other devices. It's fine for debugging, but it's never the right long-term answer. > The ideal situation is > if the kernel throws away everything the BIOS did and does everything > itself (assuming that this will not cause platform conflicts). I do not think this is the ideal situation. If the assignment done by BIOS works, I think Linux should leave it alone. If the BIOS assignment *doesn't* work, or if we hot-add a device and can't assign resources to it, sure, it makes sense for Linux to try to reassign things. But we should not throw away the BIOS assignments as a matter of course. Bjorn