Hi Robert,

kernel test robot noticed the following build errors:

[auto build test ERROR on tnguy-next-queue/dev-queue]
[also build test ERROR on tnguy-net-queue/dev-queue linus/master v7.1 
next-20260616]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Robert-Malz/ice-retry-reading-NVM-if-admin-queue-returns-EBUSY/20260616-185349
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue.git 
dev-queue
patch link:    
https://lore.kernel.org/r/20260616104521.1545053-1-robert.malz%40canonical.com
patch subject: [PATCH] ice: retry reading NVM if admin queue returns EBUSY
config: x86_64-rhel-9.4-rust 
(https://download.01.org/0day-ci/archive/20260617/[email protected]/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 
f43d6834093b19baf79beda8c0337ab020ac5f17)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20260617/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

>> drivers/net/ethernet/intel/ice/ice_nvm.c:101:37: error: use of undeclared 
>> identifier 'ICE_AQ_RC_EBUSY'; did you mean 'LIBIE_AQ_RC_EBUSY'?
     101 |                         if (hw->adminq.sq_last_status != 
ICE_AQ_RC_EBUSY ||
         |                                                          
^~~~~~~~~~~~~~~
         |                                                          
LIBIE_AQ_RC_EBUSY
   include/linux/net/intel/libie/adminq.h:380:2: note: 'LIBIE_AQ_RC_EBUSY' 
declared here
     380 |         LIBIE_AQ_RC_EBUSY       = 12, /* Device or resource busy */
         |         ^
   1 error generated.


vim +101 drivers/net/ethernet/intel/ice/ice_nvm.c

    48  
    49  /**
    50   * ice_read_flat_nvm - Read portion of NVM by flat offset
    51   * @hw: pointer to the HW struct
    52   * @offset: offset from beginning of NVM
    53   * @length: (in) number of bytes to read; (out) number of bytes 
actually read
    54   * @data: buffer to return data in (sized to fit the specified length)
    55   * @read_shadow_ram: if true, read from shadow RAM instead of NVM
    56   *
    57   * Reads a portion of the NVM, as a flat memory space. This function 
correctly
    58   * breaks read requests across Shadow RAM sectors and ensures that no 
single
    59   * read request exceeds the maximum 4KB read for a single AdminQ 
command.
    60   *
    61   * Returns a status code on failure. Note that the data pointer may be
    62   * partially updated if some reads succeed before a failure.
    63   */
    64  int
    65  ice_read_flat_nvm(struct ice_hw *hw, u32 offset, u32 *length, u8 *data,
    66                    bool read_shadow_ram)
    67  {
    68          u32 inlen = *length;
    69          u32 bytes_read = 0;
    70          int retry_cnt = 0;
    71          bool last_cmd;
    72          int status;
    73  
    74          *length = 0;
    75  
    76          /* Verify the length of the read if this is for the Shadow RAM 
*/
    77          if (read_shadow_ram && ((offset + inlen) > (hw->flash.sr_words 
* 2u))) {
    78                  ice_debug(hw, ICE_DBG_NVM, "NVM error: requested offset 
is beyond Shadow RAM limit\n");
    79                  return -EINVAL;
    80          }
    81  
    82          do {
    83                  u32 read_size, sector_offset;
    84  
    85                  /* ice_aq_read_nvm cannot read more than 4KB at a time.
    86                   * Additionally, a read from the Shadow RAM may not 
cross over
    87                   * a sector boundary. Conveniently, the sector size is 
also
    88                   * 4KB.
    89                   */
    90                  sector_offset = offset % ICE_AQ_MAX_BUF_LEN;
    91                  read_size = min_t(u32, ICE_AQ_MAX_BUF_LEN - 
sector_offset,
    92                                    inlen - bytes_read);
    93  
    94                  last_cmd = !(bytes_read + read_size < inlen);
    95  
    96                  status = ice_aq_read_nvm(hw, ICE_AQC_NVM_START_POINT,
    97                                           offset, read_size,
    98                                           data + bytes_read, last_cmd,
    99                                           read_shadow_ram, NULL);
   100                  if (status) {
 > 101                          if (hw->adminq.sq_last_status != 
 > ICE_AQ_RC_EBUSY ||
   102                              retry_cnt > ICE_SQ_SEND_MAX_EXECUTE)
   103                                  break;
   104                          ice_debug(hw, ICE_DBG_NVM,
   105                                    "NVM read EBUSY error, retry %d\n",
   106                                    retry_cnt + 1);
   107                          last_cmd = false;
   108                          ice_release_nvm(hw);
   109                          msleep(ICE_SQ_SEND_DELAY_TIME_MS);
   110                          status = ice_acquire_nvm(hw, ICE_RES_READ);
   111                          if (status)
   112                                  break;
   113                          retry_cnt++;
   114                  } else {
   115                          bytes_read += read_size;
   116                          offset += read_size;
   117                          retry_cnt = 0;
   118                  }
   119          } while (!last_cmd);
   120  
   121          *length = bytes_read;
   122          return status;
   123  }
   124  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to