ice_aq_read_nvm(9)
π ice_aq_read_nvm(9) β the kernel API manual, but make it cute π
okay so bestie, welcome to the ice_aq_read_nvm page β it lives in the Kernel API Manual and it's genuinely iconic. grab a snack, we're reading the NVM together π¦
β¨ NAME β¨
ice_aq_read_nvm β yes, that's the whole name, and honestly? it ate. this is the function that reads the NVM using the admin queue commands (0x0701). main character energy fr fr π
πΈ SYNOPSIS πΈ
int ice_aq_read_nvm (struct ice_hw *hw , u16 module_typeid , u32 offset
, u16 length , void *data , bool last_command , bool read_shadow_ram ,
struct ice_sq_cd *cd );
that's the whole signature, copied exactly, no cap. seven arguments, one return int, let's get into it π
π«Ά ARGUMENTS π«Ά
hwβ pointer to the HW struct. your hardware bestie, the whole context of the operation β¨module_typeidβ module pointer location in words from the NVM beginning. words, not bytes, bestie, don't mix it up πoffsetβ byte offset from the module beginning. like an address but for how far into the module you're looking πΈlengthβ length of the section to be read (in bytes from the offset). how much you're grabbing, in bytes πdataβ command buffer (size [bytes] =length). so the buffer has to be exactly as big aslengthbytes, that's the vibe check βοΈlast_commandβ tells if this is the last command in a series. like the final text in a group chat β flags when you're done π«‘read_shadow_ramβ tell if this is a shadow RAM read. yes, shadow RAM, very mysterious, very spooky-season π»cdβ pointer to command details structure orNULL. passNULLif you don't have one, it's literally fine π
π₯ DESCRIPTION π₯
Read the NVM using the admin queue commands (0x0701). that's the whole lore β it reads the NVM, it does it through the admin queue commands, and the opcode is 0x0701. periodt π
ngl this one's short and sweet, so there's no chaos to warn you about β just keep yourlengthmatching yourdatabuffer size and you're golden π§
π SEE ALSO π
Kernel file: ./drivers/net/ethernet/intel/ice/ice_nvm.c β that's where the code actually lives, go peek π
and the whole friend group of functions, all listed, all loved:
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_nvm_write_activate(9)ice_aq_nvm_update_empr(9)
that's the whole page bestie, you ate that π«Άβ¨ mwah π
sign-off time: this little masterpiece comes from ./drivers/net/ethernet/intel/ice, dated October 2026 π and that's on the Kernel API Manual, ice_aq_read_nvm(9), iykyk ππ
π¦ 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