Re: [PATCH 1/2] [v3] nouveau: add command-line GSP-RM registry support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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-lkp@xxxxxxxxx/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-lkp@xxxxxxxxx/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 <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402141030.X3uj4YDf-lkp@xxxxxxxxx/

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



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux