From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/media/i2c/ccs-pll.c:386:5: warning: stack frame size of 2976 bytes in function 'ccs_pll_calculate'
Date: Sun, 07 Feb 2021 10:16:26 +0800 [thread overview]
Message-ID: <202102071023.78fH3EVG-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 5391 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 61556703b610a104de324e4f061dc6cf7b218b46
commit: 9e05bbac43ebfc2fd1ff95e072730ceed807d149 media: smiapp-pll: Rename as ccs-pll
date: 9 weeks ago
config: powerpc64-randconfig-r025-20210205 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project c9439ca36342fb6013187d0a69aef92736951476)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9e05bbac43ebfc2fd1ff95e072730ceed807d149
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 9e05bbac43ebfc2fd1ff95e072730ceed807d149
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/media/i2c/ccs-pll.c:386:5: warning: stack frame size of 2976 bytes in function 'ccs_pll_calculate' [-Wframe-larger-than=]
int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *limits,
^
1 warning generated.
vim +/ccs_pll_calculate +386 drivers/media/i2c/ccs-pll.c
385
> 386 int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *limits,
387 struct ccs_pll *pll)
388 {
389 const struct ccs_pll_branch_limits *op_limits = &limits->op;
390 struct ccs_pll_branch *op_pll = &pll->op;
391 uint16_t min_pre_pll_clk_div;
392 uint16_t max_pre_pll_clk_div;
393 uint32_t lane_op_clock_ratio;
394 uint32_t mul, div;
395 unsigned int i;
396 int rval = -EINVAL;
397
398 if (pll->flags & CCS_PLL_FLAG_NO_OP_CLOCKS) {
399 /*
400 * If there's no OP PLL at all, use the VT values
401 * instead. The OP values are ignored for the rest of
402 * the PLL calculation.
403 */
404 op_limits = &limits->vt;
405 op_pll = &pll->vt;
406 }
407
408 if (pll->flags & CCS_PLL_FLAG_OP_PIX_CLOCK_PER_LANE)
409 lane_op_clock_ratio = pll->csi2.lanes;
410 else
411 lane_op_clock_ratio = 1;
412 dev_dbg(dev, "lane_op_clock_ratio: %u\n", lane_op_clock_ratio);
413
414 dev_dbg(dev, "binning: %ux%u\n", pll->binning_horizontal,
415 pll->binning_vertical);
416
417 switch (pll->bus_type) {
418 case CCS_PLL_BUS_TYPE_CSI2:
419 /* CSI transfers 2 bits per clock per lane; thus times 2 */
420 pll->pll_op_clk_freq_hz = pll->link_freq * 2
421 * (pll->csi2.lanes / lane_op_clock_ratio);
422 break;
423 case CCS_PLL_BUS_TYPE_PARALLEL:
424 pll->pll_op_clk_freq_hz = pll->link_freq * pll->bits_per_pixel
425 / DIV_ROUND_UP(pll->bits_per_pixel,
426 pll->parallel.bus_width);
427 break;
428 default:
429 return -EINVAL;
430 }
431
432 /* Figure out limits for pre-pll divider based on extclk */
433 dev_dbg(dev, "min / max pre_pll_clk_div: %u / %u\n",
434 limits->min_pre_pll_clk_div, limits->max_pre_pll_clk_div);
435 max_pre_pll_clk_div =
436 min_t(uint16_t, limits->max_pre_pll_clk_div,
437 clk_div_even(pll->ext_clk_freq_hz /
438 limits->min_pll_ip_freq_hz));
439 min_pre_pll_clk_div =
440 max_t(uint16_t, limits->min_pre_pll_clk_div,
441 clk_div_even_up(
442 DIV_ROUND_UP(pll->ext_clk_freq_hz,
443 limits->max_pll_ip_freq_hz)));
444 dev_dbg(dev, "pre-pll check: min / max pre_pll_clk_div: %u / %u\n",
445 min_pre_pll_clk_div, max_pre_pll_clk_div);
446
447 i = gcd(pll->pll_op_clk_freq_hz, pll->ext_clk_freq_hz);
448 mul = div_u64(pll->pll_op_clk_freq_hz, i);
449 div = pll->ext_clk_freq_hz / i;
450 dev_dbg(dev, "mul %u / div %u\n", mul, div);
451
452 min_pre_pll_clk_div =
453 max_t(uint16_t, min_pre_pll_clk_div,
454 clk_div_even_up(
455 DIV_ROUND_UP(mul * pll->ext_clk_freq_hz,
456 limits->max_pll_op_freq_hz)));
457 dev_dbg(dev, "pll_op check: min / max pre_pll_clk_div: %u / %u\n",
458 min_pre_pll_clk_div, max_pre_pll_clk_div);
459
460 for (pll->pre_pll_clk_div = min_pre_pll_clk_div;
461 pll->pre_pll_clk_div <= max_pre_pll_clk_div;
462 pll->pre_pll_clk_div += 2 - (pll->pre_pll_clk_div & 1)) {
463 rval = __ccs_pll_calculate(dev, limits, op_limits, pll, op_pll,
464 mul, div, lane_op_clock_ratio);
465 if (rval)
466 continue;
467
468 print_pll(dev, pll);
469 return 0;
470 }
471
472 dev_dbg(dev, "unable to compute pre_pll divisor\n");
473
474 return rval;
475 }
476 EXPORT_SYMBOL_GPL(ccs_pll_calculate);
477
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37119 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
linux-kernel@vger.kernel.org,
Mauro Carvalho Chehab <mchehab@kernel.org>,
linux-media@vger.kernel.org
Subject: drivers/media/i2c/ccs-pll.c:386:5: warning: stack frame size of 2976 bytes in function 'ccs_pll_calculate'
Date: Sun, 7 Feb 2021 10:16:26 +0800 [thread overview]
Message-ID: <202102071023.78fH3EVG-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 5261 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 61556703b610a104de324e4f061dc6cf7b218b46
commit: 9e05bbac43ebfc2fd1ff95e072730ceed807d149 media: smiapp-pll: Rename as ccs-pll
date: 9 weeks ago
config: powerpc64-randconfig-r025-20210205 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project c9439ca36342fb6013187d0a69aef92736951476)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9e05bbac43ebfc2fd1ff95e072730ceed807d149
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 9e05bbac43ebfc2fd1ff95e072730ceed807d149
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/media/i2c/ccs-pll.c:386:5: warning: stack frame size of 2976 bytes in function 'ccs_pll_calculate' [-Wframe-larger-than=]
int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *limits,
^
1 warning generated.
vim +/ccs_pll_calculate +386 drivers/media/i2c/ccs-pll.c
385
> 386 int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *limits,
387 struct ccs_pll *pll)
388 {
389 const struct ccs_pll_branch_limits *op_limits = &limits->op;
390 struct ccs_pll_branch *op_pll = &pll->op;
391 uint16_t min_pre_pll_clk_div;
392 uint16_t max_pre_pll_clk_div;
393 uint32_t lane_op_clock_ratio;
394 uint32_t mul, div;
395 unsigned int i;
396 int rval = -EINVAL;
397
398 if (pll->flags & CCS_PLL_FLAG_NO_OP_CLOCKS) {
399 /*
400 * If there's no OP PLL at all, use the VT values
401 * instead. The OP values are ignored for the rest of
402 * the PLL calculation.
403 */
404 op_limits = &limits->vt;
405 op_pll = &pll->vt;
406 }
407
408 if (pll->flags & CCS_PLL_FLAG_OP_PIX_CLOCK_PER_LANE)
409 lane_op_clock_ratio = pll->csi2.lanes;
410 else
411 lane_op_clock_ratio = 1;
412 dev_dbg(dev, "lane_op_clock_ratio: %u\n", lane_op_clock_ratio);
413
414 dev_dbg(dev, "binning: %ux%u\n", pll->binning_horizontal,
415 pll->binning_vertical);
416
417 switch (pll->bus_type) {
418 case CCS_PLL_BUS_TYPE_CSI2:
419 /* CSI transfers 2 bits per clock per lane; thus times 2 */
420 pll->pll_op_clk_freq_hz = pll->link_freq * 2
421 * (pll->csi2.lanes / lane_op_clock_ratio);
422 break;
423 case CCS_PLL_BUS_TYPE_PARALLEL:
424 pll->pll_op_clk_freq_hz = pll->link_freq * pll->bits_per_pixel
425 / DIV_ROUND_UP(pll->bits_per_pixel,
426 pll->parallel.bus_width);
427 break;
428 default:
429 return -EINVAL;
430 }
431
432 /* Figure out limits for pre-pll divider based on extclk */
433 dev_dbg(dev, "min / max pre_pll_clk_div: %u / %u\n",
434 limits->min_pre_pll_clk_div, limits->max_pre_pll_clk_div);
435 max_pre_pll_clk_div =
436 min_t(uint16_t, limits->max_pre_pll_clk_div,
437 clk_div_even(pll->ext_clk_freq_hz /
438 limits->min_pll_ip_freq_hz));
439 min_pre_pll_clk_div =
440 max_t(uint16_t, limits->min_pre_pll_clk_div,
441 clk_div_even_up(
442 DIV_ROUND_UP(pll->ext_clk_freq_hz,
443 limits->max_pll_ip_freq_hz)));
444 dev_dbg(dev, "pre-pll check: min / max pre_pll_clk_div: %u / %u\n",
445 min_pre_pll_clk_div, max_pre_pll_clk_div);
446
447 i = gcd(pll->pll_op_clk_freq_hz, pll->ext_clk_freq_hz);
448 mul = div_u64(pll->pll_op_clk_freq_hz, i);
449 div = pll->ext_clk_freq_hz / i;
450 dev_dbg(dev, "mul %u / div %u\n", mul, div);
451
452 min_pre_pll_clk_div =
453 max_t(uint16_t, min_pre_pll_clk_div,
454 clk_div_even_up(
455 DIV_ROUND_UP(mul * pll->ext_clk_freq_hz,
456 limits->max_pll_op_freq_hz)));
457 dev_dbg(dev, "pll_op check: min / max pre_pll_clk_div: %u / %u\n",
458 min_pre_pll_clk_div, max_pre_pll_clk_div);
459
460 for (pll->pre_pll_clk_div = min_pre_pll_clk_div;
461 pll->pre_pll_clk_div <= max_pre_pll_clk_div;
462 pll->pre_pll_clk_div += 2 - (pll->pre_pll_clk_div & 1)) {
463 rval = __ccs_pll_calculate(dev, limits, op_limits, pll, op_pll,
464 mul, div, lane_op_clock_ratio);
465 if (rval)
466 continue;
467
468 print_pll(dev, pll);
469 return 0;
470 }
471
472 dev_dbg(dev, "unable to compute pre_pll divisor\n");
473
474 return rval;
475 }
476 EXPORT_SYMBOL_GPL(ccs_pll_calculate);
477
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37119 bytes --]
next reply other threads:[~2021-02-07 2:16 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-07 2:16 kernel test robot [this message]
2021-02-07 2:16 ` drivers/media/i2c/ccs-pll.c:386:5: warning: stack frame size of 2976 bytes in function 'ccs_pll_calculate' kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202102071023.78fH3EVG-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.