Re: [PATCH v4 1/1] printk: fix zero-valued printk timestamps in early boot
David Laight <[email protected]> Mon, 13 Apr 2026 21:17:54 +0100
| Newsgroups | org.kernel.vger.linux-embedded,dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260413211754.643f6113@pumpkin> |
On Mon, 13 Apr 2026 17:58:34 +0000 "Bird, Tim" <[email protected]> wrote: > 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 <[email protected]> > > 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/[email protected]/config) > > compiler: aarch64-linux-gcc (GCC) 15.2.0 > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260412/[email protected]/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 <[email protected]> > > | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ > > > > 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. I suspect the warning is being generated before the optimiser throws the code away as unreachable. You might have to do: return (early_unsafe_cycles() * NS_PER_KHZ) / (CONFIG_EARLY_CYCLES_KHZ ?: 1); David > > > 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