Re: [PATCH] nvme: make firmware activation poll interval configurable
guzebing <[email protected]>
| Newsgroups | org.infradead.lists.linux-nvme,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/9/26 2:42 PM, Christoph Hellwig wrote: > On Sat, Jun 27, 2026 at 09:06:10AM +0800, guzebing wrote: >> From: Guzebing <[email protected]> >> >> nvme_fw_act_work() polls the controller processing-paused status every >> 100 ms while firmware activation is pending. Some devices can complete >> online activation in only a few hundred milliseconds, so the fixed >> interval can add noticeable latency before the driver observes >> completion. >> >> Add an nvme_core.fw_act_poll_interval_ms module parameter to make the >> poll interval tunable. Keep the default at 100 ms to preserve existing >> behavior, and accept values from 10 ms to 100 ms so systems that need >> faster completion detection can opt in to a shorter interval. >> >> Signed-off-by: Guzebing <[email protected]> >> --- >> We recently observed this issue while performing online firmware >> updates for Gen5 NVMe SSDs in a production environment. >> >> During firmware activation, the kernel quiesces I/O. Detecting the end >> of firmware activation earlier lets the driver unquiesce I/O earlier, >> which is important for the long-tail I/O latency of production >> workloads. > > What value does this device report in the Maximum Time for Firmware > Activation (MTFA) field? It might make sense to scale the polling > time as a fraction of that instead of requiring a manual override. > The Samsung PM9D3a Gen5 SSD reports MTFA = 10, i.e. 1000 ms. I also checked another device, an Intel/Solidigm P5520 Gen4 drive. It reports MTFA = 100, i.e. 10000 ms, while the observed online activation time is about 800 ms. I agree that deriving the polling interval from MTFA would be better than adding a module parameter. Given that MTFA is a conservative upper bound rather than a good estimate of the common activation time, would using a small fraction of it, for example MTFA / 100 clamped to 10..100 ms, be a reasonable policy for v2? That would give 10 ms for the PM9D3a device above, while keeping the current 100 ms interval for the P5520 case and for large-MTFA devices.