Hi Souradeep, kernel test robot noticed the following build warnings: [auto build test WARNING on net-next/main] url: https://github.com/intel-lab-lkp/linux/commits/Souradeep-Chakrabarti/net-mana-Assigning-IRQ-affinity-on-HT-cores/20231121-215912 base: net-next/main patch link: https://lore.kernel.org/r/1700574877-6037-1-git-send-email-schakrabarti%40linux.microsoft.com patch subject: [PATCH V2 net-next] net: mana: Assigning IRQ affinity on HT cores config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20231122/202311220507.k0uewCr0-lkp@xxxxxxxxx/config) compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231122/202311220507.k0uewCr0-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/202311220507.k0uewCr0-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): >> drivers/net/ethernet/microsoft/mana/gdma_main.c:1253:5: warning: variable 'avail_cpus' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized] if(!alloc_cpumask_var(&filter_mask, GFP_KERNEL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1343:19: note: uninitialized use occurs here free_cpumask_var(avail_cpus); ^~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1253:5: note: remove the '||' if its condition is always false if(!alloc_cpumask_var(&filter_mask, GFP_KERNEL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1249:39: note: initialize the variable 'avail_cpus' to silence this warning cpumask_var_t filter_mask, avail_cpus; ^ = NULL >> drivers/net/ethernet/microsoft/mana/gdma_main.c:1253:5: warning: variable 'core_id_list' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized] if(!alloc_cpumask_var(&filter_mask, GFP_KERNEL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1344:6: note: uninitialized use occurs here if (core_id_list) ^~~~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1253:2: note: remove the 'if' if its condition is always false if(!alloc_cpumask_var(&filter_mask, GFP_KERNEL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/microsoft/mana/gdma_main.c:1253:5: warning: variable 'core_id_list' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized] if(!alloc_cpumask_var(&filter_mask, GFP_KERNEL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1344:6: note: uninitialized use occurs here if (core_id_list) ^~~~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1253:5: note: remove the '||' if its condition is always false if(!alloc_cpumask_var(&filter_mask, GFP_KERNEL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/microsoft/mana/gdma_main.c:1248:28: note: initialize the variable 'core_id_list' to silence this warning unsigned int *core_id_list; ^ = NULL 3 warnings generated. vim +1253 drivers/net/ethernet/microsoft/mana/gdma_main.c 1245 1246 static int irq_setup(int *irqs, int nvec, int start_numa_node) 1247 { 1248 unsigned int *core_id_list; 1249 cpumask_var_t filter_mask, avail_cpus; 1250 int i, core_count = 0, cpu_count = 0, err = 0, node_count = 0; 1251 unsigned int cpu_first, cpu, irq_start, cores = 0, numa_node = start_numa_node; 1252 > 1253 if(!alloc_cpumask_var(&filter_mask, GFP_KERNEL) 1254 || !alloc_cpumask_var(&avail_cpus, GFP_KERNEL)) { 1255 err = -ENOMEM; 1256 goto free_irq; 1257 } 1258 cpumask_copy(filter_mask, cpu_online_mask); 1259 cpumask_copy(avail_cpus, cpu_online_mask); 1260 /* count the number of cores 1261 */ 1262 for_each_cpu(cpu, filter_mask) { 1263 cpumask_andnot(filter_mask, filter_mask, topology_sibling_cpumask(cpu)); 1264 cores++; 1265 } 1266 core_id_list = kcalloc(cores, sizeof(unsigned int), GFP_KERNEL); 1267 cpumask_copy(filter_mask, cpu_online_mask); 1268 /* initialize core_id_list array */ 1269 for_each_cpu(cpu, filter_mask) { 1270 core_id_list[core_count] = cpu; 1271 cpumask_andnot(filter_mask, filter_mask, topology_sibling_cpumask(cpu)); 1272 core_count++; 1273 } 1274 1275 /* if number of cpus are equal to max_queues per port, then 1276 * one extra interrupt for the hardware channel communication. 1277 */ 1278 if (nvec - 1 == num_online_cpus()) { 1279 irq_start = 1; 1280 cpu_first = cpumask_first(cpu_online_mask); 1281 irq_set_affinity_and_hint(irqs[0], cpumask_of(cpu_first)); 1282 } else { 1283 irq_start = 0; 1284 } 1285 1286 /* reset the core_count and num_node to 0. 1287 */ 1288 core_count = 0; 1289 1290 /* for each interrupt find the cpu of a particular 1291 * sibling set and if it belongs to the specific numa 1292 * then assign irq to it and clear the cpu bit from 1293 * the corresponding avail_cpus. 1294 * Increase the cpu_count for that node. 1295 * Once all cpus for a numa node is assigned, then 1296 * move to different numa node and continue the same. 1297 */ 1298 for (i = irq_start; i < nvec; ) { 1299 1300 /* check if the numa node has cpu or not 1301 * to avoid infinite loop. 1302 */ 1303 if (cpumask_empty(cpumask_of_node(numa_node))) { 1304 numa_node++; 1305 if (++node_count == num_online_nodes()) { 1306 err = -EAGAIN; 1307 goto free_irq; 1308 } 1309 } 1310 cpu_first = cpumask_first_and(avail_cpus, 1311 topology_sibling_cpumask(core_id_list[core_count])); 1312 if (cpu_first < nr_cpu_ids && cpu_to_node(cpu_first) == numa_node) { 1313 irq_set_affinity_and_hint(irqs[i], cpumask_of(cpu_first)); 1314 cpumask_clear_cpu(cpu_first, avail_cpus); 1315 cpu_count = cpu_count + 1; 1316 i = i + 1; 1317 1318 /* checking if all the cpus are used from the 1319 * particular node. 1320 */ 1321 if (cpu_count == nr_cpus_node(numa_node)) { 1322 numa_node = numa_node + 1; 1323 if (numa_node == num_online_nodes()) 1324 numa_node = 0; 1325 1326 /* wrap around once numa nodes 1327 * are traversed. 1328 */ 1329 if (numa_node == start_numa_node) { 1330 node_count = 0; 1331 cpumask_copy(avail_cpus, cpu_online_mask); 1332 } 1333 cpu_count = 0; 1334 core_count = 0; 1335 continue; 1336 } 1337 } 1338 if (++core_count == cores) 1339 core_count = 0; 1340 } 1341 free_irq: 1342 free_cpumask_var(filter_mask); 1343 free_cpumask_var(avail_cpus); 1344 if (core_id_list) 1345 kfree(core_id_list); 1346 return err; 1347 } 1348 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki