• Jacob Keller's avatar
    ice: display stored UNDI firmware version via devlink info · e67fbcfb
    Jacob Keller authored
    Just as we recently added support for other stored firmware flash
    versions, support display of the stored UNDI Option ROM version via
    devlink info.
    
    To do this, we need to introduce a new ice_get_inactive_orom_ver
    function. This is a little trickier than with other flash versions. The
    Option ROM version data was being read from a special "Boot
    Configuration" block of the NVM Preserved Field Area. This block only
    contains the *active* Option ROM version data. It is populated when the
    device firmware finishes updating the Option ROM.
    
    This method is ineffective at reading the stored Option ROM version
    data. Instead of reading from this section of the flash, replace this
    version extraction with one which locates the Combo Version information
    from within the Option ROM binary.
    
    This data is stored within the Option ROM at a 512 byte offset, in
    a simple structured format. The structure uses a simple modulo 256
    checksum for integrity verification. Scan through the Option ROM to
    locate the CIVD data section, and extract the Combo Version.
    
    Refactor ice_get_orom_ver_info so that it takes the bank select
    enumeration parameter. Use this to implement ice_get_inactive_orom_ver.
    
    Although all ice devices have a Boot Configuration block in the NVM PFA,
    not all devices have a valid Option ROM. In this case, the old
    ice_get_orom_ver_info would "succeed" but report a version of all
    zeros. The new implementation would fail to locate the $CIV section in
    the Option ROM and report an error. Thus, we must ensure that
    ice_init_nvm does not fail if ice_get_orom_ver_info fails.
    
    Use the new ice_get_inactive_orom_ver to allow reporting the Option ROM
    versions for a pending update via devlink info.
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarTony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    e67fbcfb
ice_nvm.c 35 KB