On Mon, 2014-12-08 at 14:04 -0700, Bjorn Helgaas wrote: > > However, I think 5b28541552ef is taking the wrong approach. Consider > a device that, like this Radeon, has a 32-bit prefetchable BAR. If > the upstream bridge has a 32-bit prefetchable window, things work as > expected -- we put the prefetchable BAR in the prefetchable window. > But if the bridge has a 64-bit prefetchable window, we put that same > BAR in a 32-bit non-prefetchable window. Well, that's expected, unless the 64-bit prefetchable window happens to be fully enclosed in 32-bit space ... So maybe the approach is to check that this is the case and "downgrade" such 64-bit prefetchable BARs to 32-bit ... Cheers, Ben. > So we upgraded the system with a better bridge, i.e., it supports a > full 64-bit window instead of just a 32-bit window, and the system > performs WORSE. That's what I think is fundamentally broken. > > > Looking at bug#85491 and the logs from Marek, BIOS didn't configure > windows > > and BARs for PCI bridge and adapters properly, which forces the > kernel to > > reassign those BARs/windows failing to be claimed previously. If I'm > correct, > > we need a way to reassign the bridge's non-prefetchable window and > with it, > > find_free_bus_resource() needn't check on "!r->parent". > > It's true that the BIOS didn't configure things correctly. But we > can't use that as an excuse; the kernel should be able to configure > things correctly itself because there are plenty of machines where the > BIOS never configures things. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html