mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* drivers/clk/imx/clk-frac-pll.c:171:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
@ 2026-10-01  5:04 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-10-01  5:04 UTC (permalink / raw)
  To: Thomas Weißschuh 
  Cc: oe-kbuild-all, linux-kernel, Shuah Khan, Johannes Berg, David Gow

Hi Thomas,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   551c722f40809618230001baccf219193e22fc5a
commit: 031cdd3bc3f369553933c1b0f4cb18000162c8ff kunit: Enable PCI on UML without triggering WARN()
date:   1 year, 1 month ago
config: um-randconfig-r2103-20261001 (https://download.01.org/0day-ci/archive/20261001/202610010618.W1vpHMMD-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0

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
| Fixes: 031cdd3bc3f3 ("kunit: Enable PCI on UML without triggering WARN()")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610010618.W1vpHMMD-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/clk/imx/clk-frac-pll.c:171:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
>> drivers/clk/imx/clk-frac-pll.c:132:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead.
   drivers/clk/imx/clk-frac-pll.c:136:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead.
--
>> drivers/clk/imx/clk-pfd.c:95:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
--
>> drivers/clk/imx/clk-pfdv2.c:118:2-8: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
   drivers/clk/imx/clk-pfdv2.c:177:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
--
>> drivers/clk/imx/clk-pllv2.c:143:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
>> drivers/clk/imx/clk-pllv2.c:100:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_long instead.
--
>> drivers/clk/imx/clk-pllv4.c:111:2-8: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
   drivers/clk/imx/clk-pllv4.c:141:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.
   drivers/clk/imx/clk-pllv4.c:201:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead.

vim +171 drivers/clk/imx/clk-frac-pll.c

6209624b9a5c1e Lucas Stach  2018-12-01  121  
6d50f953f75e76 Brian Masney 2025-07-10  122  static int clk_pll_determine_rate(struct clk_hw *hw,
6d50f953f75e76 Brian Masney 2025-07-10  123  				  struct clk_rate_request *req)
6209624b9a5c1e Lucas Stach  2018-12-01  124  {
6d50f953f75e76 Brian Masney 2025-07-10  125  	u64 parent_rate = req->best_parent_rate;
6209624b9a5c1e Lucas Stach  2018-12-01  126  	u32 divff, divfi;
6209624b9a5c1e Lucas Stach  2018-12-01  127  	u64 temp64;
6209624b9a5c1e Lucas Stach  2018-12-01  128  
6209624b9a5c1e Lucas Stach  2018-12-01  129  	parent_rate *= 8;
6d50f953f75e76 Brian Masney 2025-07-10  130  	req->rate *= 2;
6d50f953f75e76 Brian Masney 2025-07-10  131  	temp64 = req->rate;
6209624b9a5c1e Lucas Stach  2018-12-01 @132  	do_div(temp64, parent_rate);
6209624b9a5c1e Lucas Stach  2018-12-01  133  	divfi = temp64;
6d50f953f75e76 Brian Masney 2025-07-10  134  	temp64 = req->rate - divfi * parent_rate;
6209624b9a5c1e Lucas Stach  2018-12-01  135  	temp64 *= PLL_FRAC_DENOM;
6209624b9a5c1e Lucas Stach  2018-12-01  136  	do_div(temp64, parent_rate);
6209624b9a5c1e Lucas Stach  2018-12-01  137  	divff = temp64;
6209624b9a5c1e Lucas Stach  2018-12-01  138  
6209624b9a5c1e Lucas Stach  2018-12-01  139  	temp64 = parent_rate;
6209624b9a5c1e Lucas Stach  2018-12-01  140  	temp64 *= divff;
6209624b9a5c1e Lucas Stach  2018-12-01  141  	do_div(temp64, PLL_FRAC_DENOM);
6209624b9a5c1e Lucas Stach  2018-12-01  142  
6d50f953f75e76 Brian Masney 2025-07-10  143  	req->rate = parent_rate * divfi + temp64;
6d50f953f75e76 Brian Masney 2025-07-10  144  
6d50f953f75e76 Brian Masney 2025-07-10  145  	req->rate = req->rate / 2;
6209624b9a5c1e Lucas Stach  2018-12-01  146  
6d50f953f75e76 Brian Masney 2025-07-10  147  	return 0;
6209624b9a5c1e Lucas Stach  2018-12-01  148  }
6209624b9a5c1e Lucas Stach  2018-12-01  149  
6209624b9a5c1e Lucas Stach  2018-12-01  150  /*
6209624b9a5c1e Lucas Stach  2018-12-01  151   * To simplify the clock calculation, we can keep the 'PLL_OUTPUT_VAL' at zero
6209624b9a5c1e Lucas Stach  2018-12-01  152   * (means the PLL output will be divided by 2). So the PLL output can use
6209624b9a5c1e Lucas Stach  2018-12-01  153   * the below formula:
6209624b9a5c1e Lucas Stach  2018-12-01  154   * pllout = parent_rate * 8 / 2 * DIVF_VAL;
6209624b9a5c1e Lucas Stach  2018-12-01  155   * where DIVF_VAL = 1 + DIVFI + DIVFF / 2^24.
6209624b9a5c1e Lucas Stach  2018-12-01  156   */
6209624b9a5c1e Lucas Stach  2018-12-01  157  static int clk_pll_set_rate(struct clk_hw *hw, unsigned long rate,
6209624b9a5c1e Lucas Stach  2018-12-01  158  			    unsigned long parent_rate)
6209624b9a5c1e Lucas Stach  2018-12-01  159  {
6209624b9a5c1e Lucas Stach  2018-12-01  160  	struct clk_frac_pll *pll = to_clk_frac_pll(hw);
6209624b9a5c1e Lucas Stach  2018-12-01  161  	u32 val, divfi, divff;
a64a9c088b75cb Abel Vesa    2019-01-18  162  	u64 temp64;
6209624b9a5c1e Lucas Stach  2018-12-01  163  	int ret;
6209624b9a5c1e Lucas Stach  2018-12-01  164  
6209624b9a5c1e Lucas Stach  2018-12-01  165  	parent_rate *= 8;
6209624b9a5c1e Lucas Stach  2018-12-01  166  	rate *= 2;
6209624b9a5c1e Lucas Stach  2018-12-01  167  	divfi = rate / parent_rate;
a64a9c088b75cb Abel Vesa    2019-01-18  168  	temp64 = parent_rate * divfi;
a64a9c088b75cb Abel Vesa    2019-01-18  169  	temp64 = rate - temp64;
6209624b9a5c1e Lucas Stach  2018-12-01  170  	temp64 *= PLL_FRAC_DENOM;
6209624b9a5c1e Lucas Stach  2018-12-01 @171  	do_div(temp64, parent_rate);
6209624b9a5c1e Lucas Stach  2018-12-01  172  	divff = temp64;
6209624b9a5c1e Lucas Stach  2018-12-01  173  
6209624b9a5c1e Lucas Stach  2018-12-01  174  	val = readl_relaxed(pll->base + PLL_CFG1);
6209624b9a5c1e Lucas Stach  2018-12-01  175  	val &= ~(PLL_FRAC_DIV_MASK | PLL_INT_DIV_MASK);
6209624b9a5c1e Lucas Stach  2018-12-01  176  	val |= (divff << 7) | (divfi - 1);
6209624b9a5c1e Lucas Stach  2018-12-01  177  	writel_relaxed(val, pll->base + PLL_CFG1);
6209624b9a5c1e Lucas Stach  2018-12-01  178  
6209624b9a5c1e Lucas Stach  2018-12-01  179  	val = readl_relaxed(pll->base + PLL_CFG0);
6209624b9a5c1e Lucas Stach  2018-12-01  180  	val &= ~0x1f;
6209624b9a5c1e Lucas Stach  2018-12-01  181  	writel_relaxed(val, pll->base + PLL_CFG0);
6209624b9a5c1e Lucas Stach  2018-12-01  182  
6209624b9a5c1e Lucas Stach  2018-12-01  183  	/* Set the NEV_DIV_VAL to reload the DIVFI and DIVFF */
6209624b9a5c1e Lucas Stach  2018-12-01  184  	val = readl_relaxed(pll->base + PLL_CFG0);
6209624b9a5c1e Lucas Stach  2018-12-01  185  	val |= PLL_NEWDIV_VAL;
6209624b9a5c1e Lucas Stach  2018-12-01  186  	writel_relaxed(val, pll->base + PLL_CFG0);
6209624b9a5c1e Lucas Stach  2018-12-01  187  
6209624b9a5c1e Lucas Stach  2018-12-01  188  	ret = clk_wait_ack(pll);
6209624b9a5c1e Lucas Stach  2018-12-01  189  
6209624b9a5c1e Lucas Stach  2018-12-01  190  	/* clear the NEV_DIV_VAL */
6209624b9a5c1e Lucas Stach  2018-12-01  191  	val = readl_relaxed(pll->base + PLL_CFG0);
6209624b9a5c1e Lucas Stach  2018-12-01  192  	val &= ~PLL_NEWDIV_VAL;
6209624b9a5c1e Lucas Stach  2018-12-01  193  	writel_relaxed(val, pll->base + PLL_CFG0);
6209624b9a5c1e Lucas Stach  2018-12-01  194  
6209624b9a5c1e Lucas Stach  2018-12-01  195  	return ret;
6209624b9a5c1e Lucas Stach  2018-12-01  196  }
6209624b9a5c1e Lucas Stach  2018-12-01  197  

:::::: The code at line 171 was first introduced by commit
:::::: 6209624b9a5c1e417b142e9688f5fc96c1e0cd58 clk: imx: Add fractional PLL output clock

:::::: TO: Lucas Stach <l.stach@pengutronix.de>
:::::: CC: Stephen Boyd <sboyd@kernel.org>

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-10-01  5:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-01  5:04 drivers/clk/imx/clk-frac-pll.c:171:1-7: WARNING: do_div() does a 64-by-32 division, please consider using div64_ul instead kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®