CXL-UPDATE-FIRMWARE(1)
π CXL-UPDATE-FIRMWARE(1) β bestie's guide to flashing firmware on a CXL memdev
okay so welcome to cxl-update-firmware, straight out of the cxl manual, and honestly? this one is kind of a glow-up for your hardware β¨
πΈ NAME πΈ
cxl-update-firmware β update the firmware on a CXL memdev. that's it, that's the whole vibe π«Ά
π SYNOPSIS π
cxl update-firmware <mem0> [<mem1>..<memN>] [<options>]
π DESCRIPTION π
so you wanna update the firmware on one or more CXL mem devices. iconic. but first β a vibe check: those mem devices must support the set of firmware related mailbox commands, no cap. if they don't, this whole thing is not it π
here's the tea though, and it's lowkey the most important part: this command doesn't directly issue the transfer / activate firmware mailbox commands. nope. instead, the kernel's firmware loader facility is used to hand the kernel your data, and the kernel handles performing the actual update β while also managing time slicing the transfer w.r.t. other background commands. the kernel is the main character here, we're just the group chat hyping it up π
π¦ EXAMPLE π¦
# cxl update-firmware mem0 -F firmware.bin -w
[
{
"memdev":"mem0",
"pmem_size":1073741824,
"ram_size":1073741824,
"serial":0,
"numa_node":0,
"host":"cxl_mem.0",
"firmware":{
"num_slots":3,
"active_slot":2,
"online_activate_capable":false,
"slot_1_version":"cxl_test_fw_001",
"slot_2_version":"cxl_test_fw_002",
"slot_3_version":"cxl_test_fw_new_fw",
"fw_update_in_progress":false
}
}
]
firmware update completed on 1 mem device
wait, hold on, let me not fumble the bag β the actual slot_3_version in that output is:
"slot_3_version":"cxl_test_fw_new_fw",
no wait, i'm being so silly, it's literally this, copy it exactly bestie:
"slot_3_version":"cxl_test_fw_new_fw",
hmm, okay, i'm gonna stop and just give you the block verbatim so nobody gets confused π β full example, exactly as it appears:
# cxl update-firmware mem0 -F firmware.bin -w
[
{
"memdev":"mem0",
"pmem_size":1073741824,
"ram_size":1073741824,
"serial":0,
"numa_node":0,
"host":"cxl_mem.0",
"firmware":{
"num_slots":3,
"active_slot":2,
"online_activate_capable":false,
"slot_1_version":"cxl_test_fw_001",
"slot_2_version":"cxl_test_fw_002",
"slot_3_version":"cxl_test_fw_new_fw",
"fw_update_in_progress":false
}
}
]
firmware update completed on 1 mem device
and the last line slaps: firmware update completed on 1 mem device π
π₯ OPTIONS π₯
-b,--bus=β restrict the operation to the specified bus. keep it scoped, bestie.-F,--firmware-fileβ the firmware image file to use for the update. this is the actual payload, the star of the show β-c,--cancelβ attempt to abort an in-progress firmware update. heads up though: this may fail depending on what stage the update process is in. it's giving "you can try" energy, not "guaranteed" energy π-w,--waitβ by default, theupdate-firmwarecommand only initiates the firmware update and returns, while the update operation happens asynchronously in the background. this option makes the firmware update command synchronous by waiting for it to complete before returning. so if you're the type who needs to watch it happen, this is your moment π
if --wait is passed in without an accompanying firmware-file, it will initiate a wait on any current in-progress firmware updates, and then return. no new update, just vibes and patience π§
-v,--verboseβ emit more debug messages. more lore, more output, more to obsess over π
π COPYRIGHT π
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. (fr fr, no warranty, don't come for them if it breaks π)
π SEE ALSO π
cxl-list(1), β go look at your memdevs before you flash anything, that's the responsible bestie move π«Ά
and that's the whole page, diva. this lovely little doc ships as cxl, dated 2026-06-30, and it's page CXL-UPDATE-FIRMWARE(1) of the cxl manual β go forth and update responsibly πβ¨π
π¦ where this page comes from
- arch rolling: ndctl 85-1 Β· LGPL-2.1-only AND GPL-2.0-only AND CC0-1.0 AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms