All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [vireshk-pm:opp/linux-next 11/11] drivers/opp/core.c:875:32: warning: variable 'opp' is uninitialized when used here
Date: Thu, 28 May 2020 11:18:53 +0800	[thread overview]
Message-ID: <202005281149.hTxDcKho%lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 6805 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
head:   c57afacc9270629a03ecb21f956a54886eb81342
commit: c57afacc9270629a03ecb21f956a54886eb81342 [11/11] opp: Remove bandwidth votes when target_freq is zero
config: x86_64-allyesconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 3393cc4cebf9969db94dc424b7a2b6195589c33b)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        git checkout c57afacc9270629a03ecb21f956a54886eb81342
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

>> drivers/opp/core.c:875:32: warning: variable 'opp' is uninitialized when used here [-Wuninitialized]
ret = _set_opp_bw(opp_table, opp, dev, true);
^~~
drivers/opp/core.c:849:34: note: initialize the variable 'opp' to silence this warning
struct dev_pm_opp *old_opp, *opp;
^
= NULL
1 warning generated.

vim +/opp +875 drivers/opp/core.c

   833	
   834	/**
   835	 * dev_pm_opp_set_rate() - Configure new OPP based on frequency
   836	 * @dev:	 device for which we do this operation
   837	 * @target_freq: frequency to achieve
   838	 *
   839	 * This configures the power-supplies to the levels specified by the OPP
   840	 * corresponding to the target_freq, and programs the clock to a value <=
   841	 * target_freq, as rounded by clk_round_rate(). Device wanting to run@fmax
   842	 * provided by the opp, should have already rounded to the target OPP's
   843	 * frequency.
   844	 */
   845	int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
   846	{
   847		struct opp_table *opp_table;
   848		unsigned long freq, old_freq, temp_freq;
   849		struct dev_pm_opp *old_opp, *opp;
   850		struct clk *clk;
   851		int ret;
   852	
   853		opp_table = _find_opp_table(dev);
   854		if (IS_ERR(opp_table)) {
   855			dev_err(dev, "%s: device opp doesn't exist\n", __func__);
   856			return PTR_ERR(opp_table);
   857		}
   858	
   859		if (unlikely(!target_freq)) {
   860			/*
   861			 * Some drivers need to support cases where some platforms may
   862			 * have OPP table for the device, while others don't and
   863			 * opp_set_rate() just needs to behave like clk_set_rate().
   864			 */
   865			if (!_get_opp_count(opp_table))
   866				return 0;
   867	
   868			if (!opp_table->required_opp_tables && !opp_table->regulators &&
   869			    !opp_table->paths) {
   870				dev_err(dev, "target frequency can't be 0\n");
   871				ret = -EINVAL;
   872				goto put_opp_table;
   873			}
   874	
 > 875			ret = _set_opp_bw(opp_table, opp, dev, true);
   876			if (ret)
   877				return ret;
   878	
   879			if (opp_table->regulator_enabled) {
   880				regulator_disable(opp_table->regulators[0]);
   881				opp_table->regulator_enabled = false;
   882			}
   883	
   884			ret = _set_required_opps(dev, opp_table, NULL);
   885			goto put_opp_table;
   886		}
   887	
   888		clk = opp_table->clk;
   889		if (IS_ERR(clk)) {
   890			dev_err(dev, "%s: No clock available for the device\n",
   891				__func__);
   892			ret = PTR_ERR(clk);
   893			goto put_opp_table;
   894		}
   895	
   896		freq = clk_round_rate(clk, target_freq);
   897		if ((long)freq <= 0)
   898			freq = target_freq;
   899	
   900		old_freq = clk_get_rate(clk);
   901	
   902		/* Return early if nothing to do */
   903		if (old_freq == freq) {
   904			dev_dbg(dev, "%s: old/new frequencies (%lu Hz) are same, nothing to do\n",
   905				__func__, freq);
   906			ret = 0;
   907			goto put_opp_table;
   908		}
   909	
   910		/*
   911		 * For IO devices which require an OPP on some platforms/SoCs
   912		 * while just needing to scale the clock on some others
   913		 * we look for empty OPP tables with just a clock handle and
   914		 * scale only the clk. This makes dev_pm_opp_set_rate()
   915		 * equivalent to a clk_set_rate()
   916		 */
   917		if (!_get_opp_count(opp_table)) {
   918			ret = _generic_set_opp_clk_only(dev, clk, freq);
   919			goto put_opp_table;
   920		}
   921	
   922		temp_freq = old_freq;
   923		old_opp = _find_freq_ceil(opp_table, &temp_freq);
   924		if (IS_ERR(old_opp)) {
   925			dev_err(dev, "%s: failed to find current OPP for freq %lu (%ld)\n",
   926				__func__, old_freq, PTR_ERR(old_opp));
   927		}
   928	
   929		temp_freq = freq;
   930		opp = _find_freq_ceil(opp_table, &temp_freq);
   931		if (IS_ERR(opp)) {
   932			ret = PTR_ERR(opp);
   933			dev_err(dev, "%s: failed to find OPP for freq %lu (%d)\n",
   934				__func__, freq, ret);
   935			goto put_old_opp;
   936		}
   937	
   938		dev_dbg(dev, "%s: switching OPP: %lu Hz --> %lu Hz\n", __func__,
   939			old_freq, freq);
   940	
   941		/* Scaling up? Configure required OPPs before frequency */
   942		if (freq >= old_freq) {
   943			ret = _set_required_opps(dev, opp_table, opp);
   944			if (ret)
   945				goto put_opp;
   946		}
   947	
   948		if (opp_table->set_opp) {
   949			ret = _set_opp_custom(opp_table, dev, old_freq, freq,
   950					      IS_ERR(old_opp) ? NULL : old_opp->supplies,
   951					      opp->supplies);
   952		} else if (opp_table->regulators) {
   953			ret = _generic_set_opp_regulator(opp_table, dev, old_freq, freq,
   954							 IS_ERR(old_opp) ? NULL : old_opp->supplies,
   955							 opp->supplies);
   956		} else {
   957			/* Only frequency scaling */
   958			ret = _generic_set_opp_clk_only(dev, clk, freq);
   959		}
   960	
   961		/* Scaling down? Configure required OPPs after frequency */
   962		if (!ret && freq < old_freq) {
   963			ret = _set_required_opps(dev, opp_table, opp);
   964			if (ret)
   965				dev_err(dev, "Failed to set required opps: %d\n", ret);
   966		}
   967	
   968		if (!ret)
   969			ret = _set_opp_bw(opp_table, opp, dev, false);
   970	
   971	put_opp:
   972		dev_pm_opp_put(opp);
   973	put_old_opp:
   974		if (!IS_ERR(old_opp))
   975			dev_pm_opp_put(old_opp);
   976	put_opp_table:
   977		dev_pm_opp_put_opp_table(opp_table);
   978		return ret;
   979	}
   980	EXPORT_SYMBOL_GPL(dev_pm_opp_set_rate);
   981	

---
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: 73541 bytes --]

             reply	other threads:[~2020-05-28  3:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-28  3:18 kbuild test robot [this message]
2020-05-28  3:22 ` [vireshk-pm:opp/linux-next 11/11] drivers/opp/core.c:875:32: warning: variable 'opp' is uninitialized when used here Viresh Kumar

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=202005281149.hTxDcKho%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.