NDCTL-ACTIVATE-FIRMWARE(1)

πŸ’– NDCTL-ACTIVATE-FIRMWARE πŸ’–

okay bestie, welcome to ndctl-activate-firmware β€” this is the ndctl manual page and she is GIVING firmware-activation realness, no cap 🫢


✨ NAME ✨

ndctl-activate-firmware β€” activate staged firmware on memory devices πŸŽ€


🌸 SYNOPSIS 🌸

ndctl activate-firmware [<bus-id> <bus-id2> ... <bus-idN>] [<options>]

so like. some persistent memory devices run a firmware locally on the device / "DIMM" to do stuff like media management, capacity provisioning, and health monitoring. the whole process of updating that firmware usually involves a reboot, because it has implications for in-flight memory transactions. and reboots? expensive. especially for systems that literally cannot tolerate extended downtime. 😭

the kernel detects platforms that expose support for runtime-firmware-activation (FWA). ndctl update-firmware stages new firmware binaries, but if the platform supports FWA it will additionally arm the devices for activation. then ndctl activate-firmware may attempt to activate the firmware live. but!! if the platform indicates that the memory controller will be taken off-line for the duration of the update β€” that's "activate_method == suspend" β€” then the default policy for firmware activation is to inject a truncated hibernate cycle to freeze devices and applications before the hard quiesce is injected by the platform, and then resume the system. she's doing a little nap first, periodt 😴

⚠️ DANGER ⚠️ the activate-firmware command includes a --force option to tell the driver bypass the hibernation cycle and perform the update "live". I.e. it arranges for applications and devices to race the platform injected quiesce period. This option should only be used explicit knowledge that the platform quiesce time will not trigger completion timeout violations for any devices in the system. bestie do NOT be casual with this one, fr fr πŸ’€

πŸ”₯ EXAMPLES πŸ”₯

Check for any buses that support activation without triggering an activation:

# ndctl activate-firmware all --dry-run
ACPI.NFIT: ndbus1: has no devices that support firmware update.
nfit_test.1: ndbus3: has no devices that support firmware update.
e820: ndbus0: has no devices that support firmware update.
[
  {
    "provider":"nfit_test.0",
    "dev":"ndbus1",
    "scrub_state":"idle",
    "firmware":{
      "activate_method":"suspend",
      "activate_state":"idle"
    },
    "dimms":[
      {
...

Check that a specific bus supports activation without performing an activation:

# ndctl activate-firmware nfit_test.0 --dry-run --force
[
  {
    "provider":"nfit_test.0",
    "dev":"ndbus2",
    "scrub_state":"idle",
    "firmware":{
      "activate_method":"suspend",
      "activate_state":"idle"
    },
    "dimms":[
...
]

The result is equivalent to ndctl list -BFDu upon successful activation. πŸ‘‘

The ndctl list command can also enumerate the default activation method:

# ndctl list -b nfit_test.0 -BF
[
  {
    "provider":"nfit_test.0",
    "dev":"ndbus2",
    "scrub_state":"idle",
    "firmware":{
      "activate_method":"suspend",
      "activate_state":"idle"
    }
  }
]

πŸ’… OPTIONS πŸ’…

  • -n, --dry-run β€” does literally every action related to activation, including honoring --idle and --force, but skips the final execution of the activation. the overrides are undone before the command completes. any failed overrides will be reported as error messages. it's the "im just looking" of flags πŸ™ˆ
  • -I, --idle β€” implied by default! this option controls whether the platform will attempt to increase the completion timeout of all devices in the system and validate that the max completion timeout satisfies the time needed to perform the activation. this validation step can be overridden by specifying --no-idle. she checks everyone's clocks first, iconic 🌸
  • -f, --force β€” the activation method defaults to the reported "bus.firmware.activate_method" property. when the method is "live" then this --force option is ignored. when the method is "reset" no runtime activation is attempted. when the method is "suspend" this option indicates to the driver to bypass the hibernate cycle to activate firmware. in the bus when the reported "activate_method" is "suspend" the kernel driver may support overriding the suspend requirement and instead issue the firmware-activation live. CAUTION this may lead to undefined system behavior if device completion timeouts are violated for in-flight memory operations. πŸ’€ seriously. caution. we said it.
  • -v, --verbose β€” emit debug messages for the firmware activation procedure. she tells you everything, main character energy fr πŸŽ€

Copyright Β© 2016 - 2022, Intel Corporation. License GPLv2: GNU GPL version 2 http://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


πŸ¦‹ SEE ALSO πŸ¦‹

ndctl-update-firmware(1), Intel Optane PMem DSM Interface <https://pmem.io/documents/IntelOptanePMem_DSM_Interface-V2.0.pdf>


and that's the whole page bestie!! mwah πŸ’– this was ndctl, manual page NDCTL-ACTIVATE-FIRMWARE(1), dated 2026-07-07 β€” slay, go activate responsibly ✨🌈

πŸ“¦ where this page comes from