Re: [PATCH v4 03/27] gcc-sdm845: Add general purpose clock ops

kernel test robot
2024-09-14T06:56:53Z

Hi Dzmitry,

kernel test robot noticed the following build errors:

[auto build test ERROR on 5acd9952f95fb4b7da6d09a3be39195a80845eb6]

url: https://github.com/intel-lab-lkp/linux/commits/Dzmitry-Sankouski/power-supply-add-undervoltage-health-status-property/20240913-231027
base: 5acd9952f95fb4b7da6d09a3be39195a80845eb6
patch link: https://lore.kernel.org/r/20240913-starqltechn_integration_upstream-v4-3-2d2efd5c5877%40gmail.com
patch subject: [PATCH v4 03/27] gcc-sdm845: Add general purpose clock ops
config: arm-randconfig-001-20240914 (https://download.01.org/0day-ci/archive/20240914/202409141429.Wv6WJPEQ-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240914/202409141429.Wv6WJPEQ-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/202409141429.Wv6WJPEQ-lkp@intel.com/

All errors (new ones prefixed by >>):

arm-linux-gnueabi-ld: drivers/clk/qcom/clk-rcg2.o: in function `clk_rcg2_calc_mnd':
>> drivers/clk/qcom/clk-rcg2.c:437:(.text.clk_rcg2_calc_mnd+0x26): undefined reference to `__aeabi_uldivmod'
>> arm-linux-gnueabi-ld: drivers/clk/qcom/clk-rcg2.c:438:(.text.clk_rcg2_calc_mnd+0x38): undefined reference to `__aeabi_uldivmod'

vim +437 drivers/clk/qcom/clk-rcg2.c

427
428 static void clk_rcg2_calc_mnd(u64 parent_rate, u64 rate, struct freq_tbl *f,
429 unsigned int mnd_max, unsigned int hid_max)
430 {
431 int i = 2, count = 0;
432 unsigned int pre_div_pure = 1;
433 unsigned long rates_gcd, scaled_parent_rate;
434 u16 m, n = 1, n_candidate = 1, n_max;
435
436 rates_gcd = gcd(parent_rate, rate);
> 437 m = rate / rates_gcd;
> 438 scaled_parent_rate = parent_rate / rates_gcd;
439 while (scaled_parent_rate > (mnd_max + m) * hid_max) {
440 // we're exceeding divisor's range, trying lower scale.
441 if (m > 1) {
442 m--;
443 scaled_parent_rate = mult_frac(scaled_parent_rate, m, (m + 1));
444 } else {
445 f->n = mnd_max + m;
446 f->pre_div = hid_max;
447 f->m = m;
448 }
449 }
450
451 n_max = m + mnd_max;
452
453 while (scaled_parent_rate > 1) {
454 while (scaled_parent_rate % i == 0) {
455 n_candidate *= i;
456 if (n_candidate < n_max)
457 n = n_candidate;
458 else if (pre_div_pure * i < hid_max)
459 pre_div_pure *= i;
460 else
461 clk_rcg2_split_div(i, &pre_div_pure, &n, hid_max);
462
463 scaled_parent_rate /= i;
464 }
465 i++;
466 count++;
467 }
468
469 f->m = m;
470 f->n = n;
471 f->pre_div = pre_div_pure > 1 ? pre_div_pure : 0;
472 }
473

--
0-DAY CI Kernel Test Service