RE: [PATCH v4 1/1] printk: fix zero-valued printk timestamps in early boot

Bird, Tim
2026-04-13T17:59:37Z

Hmmm,

This is a false positive warning from the compiler (see below).

I apologize for not catching it. I did test with CONFIG_EARLY_CYCLES=0
and I'm not sure why I didn't see the warning.

I'll see if I can silence this warning.

> -----Original Message-----
> From: kernel test robot <lkp@intel.com>
> Sent: Sunday, April 12, 2026 4:11 AM
> Hi Tim,
>
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on linus/master]
> [also build test WARNING on v7.0-rc7 next-20260410]
> [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/Tim-Bird/printk-fix-zero-valued-printk-timestamps-in-early-boot/20260412-134726
> base: linus/master
> patch link: https://lore.kernel.org/r/20260410203741.997410-2-tim.bird%40sony.com
> patch subject: [PATCH v4 1/1] printk: fix zero-valued printk timestamps in early boot
> config: arm64-allnoconfig (https://download.01.org/0day-ci/archive/20260412/202604121822.OvOLcTnO-lkp@intel.com/config)
> compiler: aarch64-linux-gcc (GCC) 15.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260412/202604121822.OvOLcTnO-lkp@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 <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202604121822.OvOLcTnO-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
> In file included from kernel/printk/printk.c:49:
> include/linux/early_times.h: In function 'early_times_ns':
> >> include/linux/early_times.h:45:61: warning: division by zero [-Wdiv-by-zero]
> 45 | return (early_unsafe_cycles() * NS_PER_KHZ) / CONFIG_EARLY_CYCLES_KHZ;
> | ^
>
>
> vim +45 include/linux/early_times.h
>
> 34
> 35 /* returns a nanosecond value based on early cycles */
> 36 static inline u64 early_times_ns(void)
> 37 {
> 38 if (CONFIG_EARLY_CYCLES_KHZ)
> 39 /*
> 40 * Note: the multiply must precede the division to avoid
> 41 * truncation and loss of resolution
> 42 * Don't use fancier MULT/SHIFT math here. Since this is
> 43 * static, the compiler can optimize the math operations.
> 44 */
> > 45 return (early_unsafe_cycles() * NS_PER_KHZ) / CONFIG_EARLY_CYCLES_KHZ;
Based on this conditional, it's not possible for CONFIG_EARLY_CYCLES_KHZ to be zero
on this line of code. Does GCC not catch this?
if (0)
x = <some expression>/0;

So this is a false positive.

> 46 return 0;
> 47 }
> 48 #else
> 49 static inline u64 early_times_ns(void)
> 50 {
> 51 return 0;
> 52 }
> 53 #endif
> 54
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki