ice_nvm_write_activate(9)
π ice_nvm_write_activate(9) β the Kernel API Manual page you didn't know you needed π
okay so real talk, we're in the Kernel API Manual today and this little icon is ice_nvm_write_activate(9). yes it's a mouthful, no we're not skipping it, she's important. β¨
β¨ NAME β¨
ice_nvm_write_activate β and bestieβ¦ that's it. that's the whole line. the description after the dash is literally empty π no cap, the page just says the name and then moves on. we love a mysterious main character moment.
π¦ SYNOPSIS π¦
int ice_nvm_write_activate (struct ice_hw *hw , u16 cmd_flags , u8
*response_flags );
πΈ ARGUMENTS πΈ
hwβ pointer to the HW struct π that's your hardware, your whole situation, she's astruct ice_hw *cmd_flagsβ flags for write activate command β¨ aka the flags that tell the write activate command what's upresponse_flagsβ response indicators from firmware π firmware talks back and these are the indicators, periodt
π₯ DESCRIPTION π₯
okay so the actual job: update the control word with the required banks' validity bits and dump the Shadow RAM to flash β 0x0707 baybeeee π
(yes that hex is important, don't come for me, it's in the source).
so what's actually in cmd_flags? three things, and she's an overachiever:
- which banks to activate π¦
- the preservation level to use when activating the NVM bank π§
- whether an EMP reset is required for activation β‘
ngl, keep this one in your notes: the 16bit cmd_flags value is split between two separate 1 byte flag values in the descriptor. like, she's one number on the outside and two little bytes on the inside. iykyk π«Ά
and when the firmware command returns successfully, the response_flags variable gets updated with the flags reported by firmware β those indicate certain status, such as whether EMP reset is enabled. literally the firmware sliding into your DMs with a status update ππ
π SEE ALSO π
first up, the Kernel file, right here in the group chat:
./drivers/net/ethernet/intel/ice/ice_nvm.c
and now the whole friend group β every single one of these, no skip, we do not leave anyone out π«Ά:
ice_aq_read_nvm(9)ice_read_flat_nvm(9)ice_aq_update_nvm(9)ice_aq_erase_nvm(9)ice_read_sr_word(9)ice_acquire_nvm(9)ice_release_nvm(9)ice_get_flash_bank_offset(9)ice_read_flash_module(9)ice_read_nvm_module(9)ice_read_nvm_sr_copy(9)ice_read_netlist_module(9)ice_get_pfa_module_tlv(9)ice_read_pba_string(9)ice_get_nvm_ver_info(9)ice_get_inactive_nvm_ver(9)ice_get_orom_civd_data(9)ice_get_orom_ver_info(9)ice_get_inactive_orom_ver(9)ice_get_netlist_info(9)ice_get_inactive_netlist_ver(9)ice_discover_flash_size(9)ice_read_sr_pointer(9)ice_read_sr_area_size(9)ice_determine_active_flash_banks(9)ice_get_nvm_css_hdr_len(9)ice_determine_css_hdr_len(9)ice_init_nvm(9)ice_nvm_validate_checksum(9)ice_aq_nvm_update_empr(9)
and that's the page bestie!! π shoutout to the source path ./drivers/net/ethernet/intel/ice, dated October 2026, living under ice_nvm_write_activate(9) forever π you ate, honestly. πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms