NDCTL-ACTIVATE-FIR(1) | ndctl Manual | NDCTL-ACTIVATE-FIR(1) |
NAME¶
ndctl-activate-firmware - activate staged firmware on memory devices
SYNOPSIS¶
ndctl activate-firmware [<bus-id> <bus-id2> ... <bus-idN>] [<options>]
Some persistent memory devices run a firmware locally on the device / "DIMM" to perform tasks like media management, capacity provisioning, and health monitoring. The process of updating that firmware typically involves a reboot because it has implications for in-flight memory transactions. However, reboots can be costly for systems that can not tolerate extended downtime.
The kernel detects platforms that expose support for runtime-firmware-activation (FWA). The 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. However, if the platform indicates that the memory controller will be taken off-line for the duration of the update "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.
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.
EXAMPLES¶
Check for any buses that support activation without triggering an activation:
.ft C # 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":[
{ ... .ft
Check that a specific bus supports activation without performing an activation:
.ft C # 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":[ ... ] .ft
The result is equivalent to ndctl list -BFDu upon successful activation.
The ndctl list command can also enumerate the default activation method:
.ft C # ndctl list -b nfit_test.0 -BF [
{
"provider":"nfit_test.0",
"dev":"ndbus2",
"scrub_state":"idle",
"firmware":{
"activate_method":"suspend",
"activate_state":"idle"
}
} ] .ft
OPTIONS¶
-n, --dry-run
-I, --idle
-f, --force
-v, --verbose
COPYRIGHT¶
Copyright © 2016 - 2020, 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[1]
NOTES¶
- 1.
- Intel Optane PMem DSM Interface
09/29/2023 | ndctl 71.1 |