Hi Timur,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-intel/for-linux-next-fixes]
[also build test WARNING on drm-tip/drm-tip linus/master v6.8-rc4 next-20240213]
[cannot apply to drm-misc/drm-misc-next drm/drm-next drm-exynos/exynos-drm-next 
drm-intel/for-linux-next]
[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/Timur-Tabi/nouveau-add-command-line-GSP-RM-registry-support/20240213-051852
base:   git://anongit.freedesktop.org/drm-intel for-linux-next-fixes
patch link:    
https://lore.kernel.org/r/20240212211548.1094496-2-ttabi%40nvidia.com
patch subject: [PATCH 1/2] [v3] nouveau: add command-line GSP-RM registry 
support
config: parisc-defconfig 
(https://download.01.org/0day-ci/archive/20240214/202402141030.x3uj4ydf-...@intel.com/config)
compiler: hppa-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20240214/202402141030.x3uj4ydf-...@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/202402141030.x3uj4ydf-...@intel.com/

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c: In function 
'r535_gsp_rpc_set_registry':
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1317:24: warning: variable 
>> 'length' set but not used [-Wunused-but-set-variable]
    1317 |                 size_t length;
         |                        ^~~~~~
--
>> drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1246: warning: cannot 
>> understand function prototype: 'const struct nv_gsp_registry_entries 
>> r535_registry_entries[] = '
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1673: warning: Function 
parameter or struct member 'priv' not described in 
'r535_gsp_msg_run_cpu_sequencer'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1673: warning: Function 
parameter or struct member 'fn' not described in 
'r535_gsp_msg_run_cpu_sequencer'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1673: warning: Function 
parameter or struct member 'repv' not described in 
'r535_gsp_msg_run_cpu_sequencer'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:1673: warning: Function 
parameter or struct member 'repc' not described in 
'r535_gsp_msg_run_cpu_sequencer'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:2046: warning: Function 
parameter or struct member 'gsp' not described in 'r535_gsp_libos_init'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:2186: warning: Function 
parameter or struct member 'gsp' not described in 'nvkm_gsp_radix3_sg'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:2186: warning: Function 
parameter or struct member 'sgt' not described in 'nvkm_gsp_radix3_sg'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:2186: warning: Function 
parameter or struct member 'size' not described in 'nvkm_gsp_radix3_sg'
   drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c:2186: warning: Function 
parameter or struct member 'rx3' not described in 'nvkm_gsp_radix3_sg'


vim +/length +1317 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c

  1235  
  1236  /**
  1237   * r535_registry_entries - required registry entries for GSP-RM
  1238   *
  1239   * This array lists registry entries that are required for GSP-RM to
  1240   * function correctly.
  1241   *
  1242   * RMSecBusResetEnable - enables PCI secondary bus reset
  1243   * RMForcePcieConfigSave - forces GSP-RM to preserve PCI configuration
  1244   *   registers on any PCI reset.
  1245   */
> 1246  static const struct nv_gsp_registry_entries r535_registry_entries[] = {
  1247          { "RMSecBusResetEnable", 1 },
  1248          { "RMForcePcieConfigSave", 1 },
  1249  };
  1250  #define NV_GSP_REG_NUM_ENTRIES ARRAY_SIZE(r535_registry_entries)
  1251  
  1252  /**
  1253   * strip - strips all characters in 'reject' from 's'
  1254   * @s: string to strip
  1255   * @reject: string of characters to remove
  1256   *
  1257   * 's' is modified.
  1258   *
  1259   * Returns the length of the new string.
  1260   */
  1261  static size_t strip(char *s, const char *reject)
  1262  {
  1263          char *p = s, *p2 = s;
  1264          size_t length = 0;
  1265          char c;
  1266  
  1267          do {
  1268                  while ((c = *p2) && strchr(reject, c))
  1269                          p2++;
  1270  
  1271                  *p++ = c = *p2++;
  1272                  length++;
  1273          } while (c);
  1274  
  1275          return length;
  1276  }
  1277  
  1278  /**
  1279   * r535_gsp_rpc_set_registry - build registry RPC and call GSP-RM
  1280   * @gsp: gsp pointer
  1281   *
  1282   * The GSP-RM registry is a set of key/value pairs that configure some 
aspects
  1283   * of GSP-RM. The keys are strings, and the values are 32-bit integers.
  1284   *
  1285   * The registry is built from a combination of a static hard-coded list 
(see
  1286   * above) and entries passed on the driver's command line.
  1287   */
  1288  static int
  1289  r535_gsp_rpc_set_registry(struct nvkm_gsp *gsp)
  1290  {
  1291          PACKED_REGISTRY_TABLE *rpc;
  1292          unsigned int i;
  1293          int ret;
  1294  
  1295          INIT_LIST_HEAD(&gsp->registry_list);
  1296          gsp->registry_rpc_size = sizeof(PACKED_REGISTRY_TABLE);
  1297  
  1298          /* Add the required registry entries first */
  1299          for (i = 0; i < NV_GSP_REG_NUM_ENTRIES; i++) {
  1300                  ret = add_registry_num(gsp, 
r535_registry_entries[i].name,
  1301                                   r535_registry_entries[i].value);
  1302                  if (ret) {
  1303                          clean_registry(gsp);
  1304                          return ret;
  1305                  }
  1306          }
  1307  
  1308          /*
  1309           * The NVreg_RegistryDwords parameter is a string of key=value
  1310           * pairs separated by semicolons. We need to extract and trim 
each
  1311           * substring, and then parse the substring to extract the key 
and
  1312           * value.
  1313           */
  1314          if (NVreg_RegistryDwords) {
  1315                  char *p = kstrdup(NVreg_RegistryDwords, GFP_KERNEL);
  1316                  char *start, *next = p, *equal;
> 1317                  size_t length;
  1318  
  1319                  /* Remove any whitespace from the parameter string */
  1320                  length = strip(p, " \t\n");
  1321  
  1322                  while ((start = strsep(&next, ";"))) {
  1323                          long value;
  1324  
  1325                          equal = strchr(start, '=');
  1326                          if (!equal || (equal == start) || 
!isdigit(equal[1])) {
  1327                                  nvkm_error(&gsp->subdev,
  1328                                          "ignoring invalid registry 
string '%s'\n", start);
  1329                                  continue;
  1330                          }
  1331  
  1332                          ret = kstrtol(equal + 1, 0, &value);
  1333                          if (ret) {
  1334                                  nvkm_error(&gsp->subdev,
  1335                                          "ignoring invalid registry 
value in '%s'\n", start);
  1336                                  continue;
  1337                          }
  1338  
  1339                          /* Truncate the key=value string to just key */
  1340                          *equal = 0;
  1341  
  1342                          ret = add_registry_num(gsp, start, value);
  1343                          if (ret) {
  1344                                  nvkm_error(&gsp->subdev,
  1345                                          "ignoring invalid registry 
key/value '%s=%lu'\n",
  1346                                          start, value);
  1347                                  continue;
  1348                          }
  1349                  }
  1350  
  1351                  kfree(p);
  1352          }
  1353  
  1354          rpc = nvkm_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_SET_REGISTRY, 
gsp->registry_rpc_size);
  1355          if (IS_ERR(rpc)) {
  1356                  clean_registry(gsp);
  1357                  return PTR_ERR(rpc);
  1358          }
  1359  
  1360          build_registry(gsp, rpc);
  1361  
  1362          return nvkm_gsp_rpc_wr(gsp, rpc, false);
  1363  }
  1364  

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

Reply via email to