On Mon, Mar 28, 2022 at 04:00:05PM -0700, Tanjore Suresh wrote: > Problem: > > Some of our machines are configured with many NVMe devices and > are validated for strict shutdown time requirements. Each NVMe > device plugged into the system, typicaly takes about 4.5 secs > to shutdown. A system with 16 such NVMe devices will takes > approximately 80 secs to shutdown and go through reboot. > > The current shutdown APIs as defined at bus level is defined to be > synchronous. Therefore, more devices are in the system the greater > the time it takes to shutdown. This shutdown time significantly > contributes the machine reboot time. > > Solution: > > This patch set proposes an asynchronous shutdown interface at bus level, > modifies the core driver, device shutdown routine to exploit the > new interface while maintaining backward compatibility with synchronous > implementation already existing (Patch 1 of 3) and exploits new interface > to enable all PCI-E based devices to use asynchronous interface semantics > if necessary (Patch 2 of 3). The implementation at PCI-E level also works > in a backward compatible way, to allow exiting device implementation > to work with current synchronous semantics. Only show cases an example > implementation for NVMe device to exploit this asynchronous shutdown > interface. (Patch 3 of 3). Thanks, I agree we should improve shutdown times. I tried a while ago, but lost track to follow up at the time. Here's the reference, fwiw, though it may be out of date :): http://lists.infradead.org/pipermail/linux-nvme/2014-May/000826.html The above solution is similiar to how probe waits on an async domain. Maybe pci can schedule the async shutdown instead of relying on low-level drivers so that everyone implicitly benefits instead of just nvme? I'll double-check if that's reasonable, but I'll look through this series too.