On Mon, 2019-06-24 at 18:47 +1000, Benjamin Herrenschmidt wrote: > On Mon, 2019-06-24 at 08:42 +0000, Koenig, Christian wrote: > > Then we resize the VRAM BAR by calling pci_resize_resource(). That in > > turn tries to resize and shuffle around the parent bridge resources > > using pci_reassign_bridge_resources(). > > > > But pci_reassign_bridge_resources() does not assign any device > > resources, it just tries to make sure the upstream bridges have enough > > space to fit everything in. Hrm... are you sure of this ? Maybe it has changed... or I'm missing something. Because right in the middle of it I see: __pci_bus_size_bridges(bridge->subordinate, &added); __pci_bridge_assign_resources(bridge, &added, &failed); Now the second of these will call __pci_bus_assign_resources() on the bridge->subordinate, which will recursively assign all devices below the bridge. Or am I overlooking something ? It could be that if it fails, then you need to restore your device resources indeed... but the normal case should work from my reading of the code. Cheers, Ben.