Re: [PATCHv2 1/2] watchdog/softlockup: low-overhead detection of interrupt storm

From: kernel test robot
Date: Tue Jan 30 2024 - 23:30:36 EST


Hi Bitao,

kernel test robot noticed the following build warnings:

[auto build test WARNING on akpm-mm/mm-everything]
[also build test WARNING on linus/master v6.8-rc2 next-20240131]
[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/Bitao-Hu/watchdog-softlockup-low-overhead-detection-of-interrupt-storm/20240130-155029
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20240130074744.45759-2-yaoma%40linux.alibaba.com
patch subject: [PATCHv2 1/2] watchdog/softlockup: low-overhead detection of interrupt storm
config: x86_64-randconfig-122-20240130 (https://download.01.org/0day-ci/archive/20240131/202401311206.nS3XM5Li-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240131/202401311206.nS3XM5Li-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/202401311206.nS3XM5Li-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> kernel/watchdog.c:464:50: sparse: sparse: incorrect type in initializer (different modifiers) @@ expected unsigned char [usertype] ( *utilization )[4] @@ got unsigned char [noderef] [usertype] ( * )[4] @@
kernel/watchdog.c:464:50: sparse: expected unsigned char [usertype] ( *utilization )[4]
kernel/watchdog.c:464:50: sparse: got unsigned char [noderef] [usertype] ( * )[4]
kernel/watchdog.c:489:50: sparse: sparse: incorrect type in initializer (different modifiers) @@ expected unsigned char [usertype] ( *utilization )[4] @@ got unsigned char [noderef] [usertype] ( * )[4] @@
kernel/watchdog.c:489:50: sparse: expected unsigned char [usertype] ( *utilization )[4]
kernel/watchdog.c:489:50: sparse: got unsigned char [noderef] [usertype] ( * )[4]

vim +464 kernel/watchdog.c

459
460 static void update_cpustat(void)
461 {
462 u8 i;
463 u16 *old = this_cpu_ptr(cpustat_old);
> 464 u8 (*utilization)[NUM_STATS_PER_GROUP] = this_cpu_ptr(cpustat_utilization);
465 u8 tail = this_cpu_read(cpustat_tail);
466 struct kernel_cpustat kcpustat;
467 u64 *cpustat = kcpustat.cpustat;
468 u16 sample_period_ms = sample_period >> 24LL; /* 2^24ns ~= 16.8ms */
469
470 kcpustat_cpu_fetch(&kcpustat, smp_processor_id());
471 for (i = STATS_SYSTEM; i < NUM_STATS_PER_GROUP; i++) {
472 /*
473 * We don't need nanosecond resolution. A granularity of 16ms is
474 * sufficient for our precision, allowing us to use u16 to store
475 * cpustats, which will roll over roughly every ~1000 seconds.
476 * 2^24 ~= 16 * 10^6
477 */
478 cpustat[idx_to_stat[i]] = lower_16_bits(cpustat[idx_to_stat[i]] >> 24LL);
479 utilization[tail][i] = 100 * (u16)(cpustat[idx_to_stat[i]] - old[i])
480 / sample_period_ms;
481 old[i] = cpustat[idx_to_stat[i]];
482 }
483 this_cpu_write(cpustat_tail, (tail + 1) % NUM_STATS_GROUPS);
484 }
485

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