Hi Haren,

kernel test robot noticed the following build warnings:

[auto build test WARNING on powerpc/next]
[also build test WARNING on powerpc/fixes linus/master v6.13-rc5 next-20241220]
[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/Haren-Myneni/powerpc-pseries-Define-common-functions-for-RTAS-sequence-HCALLs/20250105-045010
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
patch link:    
https://lore.kernel.org/r/20250104204652.388720-4-haren%40linux.ibm.com
patch subject: [PATCH 3/6] powerpc/pseries: Add papr-indices char driver for 
ibm,get-indices HCALL
config: powerpc64-randconfig-002-20250105 
(https://download.01.org/0day-ci/archive/20250105/202501051117.d90y1vns-...@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 
096551537b2a747a3387726ca618ceeb3950e9bc)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20250105/202501051117.d90y1vns-...@intel.com/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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202501051117.d90y1vns-...@intel.com/

All warnings (new ones prefixed by >>):

>> arch/powerpc/platforms/pseries/papr-indices.c:45: warning: expecting 
>> prototype for struct rtas_ibm_get_indices_params. Prototype was for struct 
>> rtas_get_indices_params instead
>> arch/powerpc/platforms/pseries/papr-indices.c:210: warning: This comment 
>> starts with '/**', but isn't a kernel-doc comment. Refer 
>> Documentation/doc-guide/kernel-doc.rst
    * Work function to be passed to papr_rtas_blob_generate().
>> arch/powerpc/platforms/pseries/papr-indices.c:247: warning: Function 
>> parameter or struct member 'file' not described in 'papr_indices_handle_read'
>> arch/powerpc/platforms/pseries/papr-indices.c:247: warning: Function 
>> parameter or struct member 'buf' not described in 'papr_indices_handle_read'
>> arch/powerpc/platforms/pseries/papr-indices.c:247: warning: Function 
>> parameter or struct member 'size' not described in 'papr_indices_handle_read'
>> arch/powerpc/platforms/pseries/papr-indices.c:247: warning: Function 
>> parameter or struct member 'off' not described in 'papr_indices_handle_read'


vim +45 arch/powerpc/platforms/pseries/papr-indices.c

    29  
    30  /**
    31   * struct rtas_ibm_get_indices_params - Parameters (in and out) for
    32   *                                      ibm,get-indices.
    33   * @is_sensor:  In: Caller-provided whether sensor or indicator.
    34   * @indice_type:In: Caller-provided indice (sensor or indicator) token
    35   * @work_area:  In: Caller-provided work area buffer for results.
    36   * @next:       In: Sequence number. Out: Next sequence number.
    37   * @status:     Out: RTAS call status.
    38   */
    39  struct rtas_get_indices_params {
    40          u8 is_sensor;
    41          u32 indice_type;
    42          struct rtas_work_area *work_area;
    43          u32 next;
    44          s32 status;
  > 45  };
    46  
    47  /**
    48   * rtas_ibm_get_indices() - Call ibm,get-indices to fill a work area 
buffer.
    49   * @params: See &struct rtas_ibm_get_indices_params.
    50   *
    51   * Calls ibm,get-indices until it errors or successfully deposits data
    52   * into the supplied work area. Handles RTAS retry statuses. Maps RTAS
    53   * error statuses to reasonable errno values.
    54   *
    55   * The caller is expected to invoke rtas_ibm_get_indices() multiple 
times
    56   * to retrieve all indices data for the provided indice type. Only one
    57   * sequence should be in progress at any time; starting a new sequence
    58   * will disrupt any sequence already in progress. Serialization of
    59   * indices retrieval sequences is the responsibility of the caller.
    60   *
    61   * The caller should inspect @params.status to determine whether more
    62   * calls are needed to complete the sequence.
    63   *
    64   * Context: May sleep.
    65   * Return: -ve on error, 0 otherwise.
    66   */
    67  static int rtas_ibm_get_indices(struct rtas_get_indices_params *params)
    68  {
    69          struct rtas_work_area *work_area = params->work_area;
    70          const s32 token = rtas_function_token(RTAS_FN_IBM_GET_INDICES);
    71          u32 rets;
    72          s32 fwrc;
    73          int ret;
    74  
    75          if (token == RTAS_UNKNOWN_SERVICE)
    76                  return -ENOENT;
    77  
    78          lockdep_assert_held(&rtas_ibm_get_indices_lock);
    79  
    80          do {
    81                  fwrc = rtas_call(token, 5, 2, &rets, params->is_sensor,
    82                                  params->indice_type,
    83                                  rtas_work_area_phys(work_area),
    84                                  rtas_work_area_size(work_area),
    85                                  params->next);
    86          } while (rtas_busy_delay(fwrc));
    87  
    88          switch (fwrc) {
    89          case RTAS_HARDWARE_ERROR:
    90                  ret = -EIO;
    91                  break;
    92          case RTAS_INVALID_PARAMETER: /* Indicator type is not supported 
*/
    93                  ret = -EINVAL;
    94                  break;
    95          case RTAS_IBM_GET_INDICES_START_OVER:
    96                  ret = -EAGAIN;
    97                  pr_info_ratelimited("Indices changed during retrieval, 
retrying\n");
    98                  params->next = 1;
    99                  break;
   100          case RTAS_IBM_GET_INDICES_MORE_DATA:
   101                  params->next = rets;
   102                  fallthrough;
   103          case RTAS_IBM_GET_INDICES_COMPLETE:
   104                  params->next = 0;
   105                  ret = 0;
   106                  break;
   107          default:
   108                  ret = -EIO;
   109                  pr_err_ratelimited("unexpected ibm,get-indices status 
%d\n", fwrc);
   110                  break;
   111          }
   112  
   113          params->status = fwrc;
   114          return ret;
   115  }
   116  
   117  /*
   118   * Internal indices sequence APIs. A sequence is a series of calls to
   119   * ibm,get-indices for a given location code. The sequence ends when
   120   * an error is encountered or all indices for the input has been
   121   * returned.
   122   */
   123  
   124  /**
   125   * indices_sequence_begin() - Begin a indices retrieval sequence.
   126   * @seq:      Uninitialized sequence state.
   127   * @params: Indices call parameters and initialization
   128   *
   129   * Initializes @seq with the resources necessary to carry out indices
   130   * call sequence. Callers must pass @seq to indices_sequence_end()
   131   * regardless of whether the sequence succeeds.
   132   *
   133   * Context: May sleep.
   134   */
   135  static void indices_sequence_begin(struct papr_rtas_sequence *seq,
   136                                  void *params)
   137  {
   138          struct rtas_get_indices_params  *param;
   139  
   140          param = (struct rtas_get_indices_params *)params;
   141          /*
   142           * We could allocate the work area before acquiring the
   143           * function lock, but that would allow concurrent requests to
   144           * exhaust the limited work area pool for no benefit. So
   145           * allocate the work area under the lock.
   146           */
   147          mutex_lock(&rtas_ibm_get_indices_lock);
   148          param->work_area = 
rtas_work_area_alloc(RTAS_GET_INDICES_BUF_SIZE);
   149          param->next = 1;
   150          param->status = 0;
   151          seq->params = param;
   152  }
   153  
   154  /**
   155   * indices_sequence_end() - Finalize a indices retrieval sequence.
   156   * @seq: indices call parameters from sequence struct
   157   *
   158   * Releases resources obtained by indices_sequence_begin().
   159   */
   160  static void indices_sequence_end(struct papr_rtas_sequence *seq)
   161  {
   162          struct rtas_get_indices_params *param;
   163  
   164          param =  (struct rtas_get_indices_params *)seq->params;
   165          rtas_work_area_free(param->work_area);
   166          mutex_unlock(&rtas_ibm_get_indices_lock);
   167  }
   168  
   169  /**
   170   * indices_sequence_should_stop() - Determine whether a indices
   171   *                                  retrieval sequence should continue.
   172   * @seq: indices sequence state.
   173   *
   174   * Examines the sequence error state and outputs of the last call to
   175   * ibm,get-indices to determine whether the sequence in progress should
   176   * continue or stop.
   177   *
   178   * Return: True if the sequence has encountered an error or if all
   179   *         indices for this sequence has been retrieved. False 
otherwise.
   180   */
   181  static bool indices_sequence_should_stop(const struct 
papr_rtas_sequence *seq)
   182  {
   183          struct rtas_get_indices_params *param;
   184          bool done;
   185  
   186          if (seq->error)
   187                  return true;
   188  
   189          param =  (struct rtas_get_indices_params *)seq->params;
   190  
   191          switch (param->status) {
   192          case RTAS_IBM_GET_INDICES_COMPLETE:
   193                  if (param->next == 1)
   194                          done = false; /* Initial state. */
   195                  else
   196                          done = true; /* All data consumed. */
   197                  break;
   198          case RTAS_IBM_GET_INDICES_MORE_DATA:
   199                  done = false; /* More data available. */
   200                  break;
   201          default:
   202                  done = true; /* Error encountered. */
   203                  break;
   204          }
   205  
   206          return done;
   207  }
   208  
   209  /**
 > 210   * Work function to be passed to papr_rtas_blob_generate().
   211   *
   212   * ibm,get-indices RTAS call fills the work area with the certain
   213   * format but does not return the bytes written in the buffer. So
   214   * instead of kernel parsing this work area to determine the buffer
   215   * length, copy the complete work area (RTAS_GET_INDICES_BUF_SIZE)
   216   * to the blob and let the user space to obtain the data.
   217   * Means RTAS_GET_INDICES_BUF_SIZE data will be returned for each
   218   * read().
   219   */
   220  

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

Reply via email to