On Tue, Feb 25, 2025 at 06:57:56PM -0400, Jason Gunthorpe wrote: > The common driver shutdown process in the kernel, that is well tested > and copied, makes the driver single threaded during the remove() > callback. All devres callbacks run in the same callchain, __device_release_driver() first calls remove() and then all the devres callbacks, where we revoke the pci::Bar, by which gets dropped and hence the bar is unmapped and resource regions are free. It's not different to C drivers. Except that in C you don't lose access to the void pointer that still points to the (unmapped) MMIO address.