Message ID | 20200604120905.1344074-1-robert.marko@sartura.hr (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | clk: qcom: ipq4019: fix apss cpu overclocking | expand |
Sorry for asking, but are these warnings relevant? GCC9.3 does not throw them Regards Robert On Thu, Jun 4, 2020 at 10:25 PM kernel test robot <lkp@intel.com> wrote: > > Hi Robert, > > I love your patch! Perhaps something to improve: > > [auto build test WARNING on clk/clk-next] > [also build test WARNING on v5.7 next-20200604] > [if your patch is applied to the wrong git tree, please drop us a note to help > improve the system. BTW, we also suggest to use '--base' option to specify the > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > url: https://github.com/0day-ci/linux/commits/Robert-Marko/clk-qcom-ipq4019-fix-apss-cpu-overclocking/20200605-002859 > base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next > config: x86_64-allyesconfig (attached as .config) > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project ac47588bc4ff5927a01ed6fcd269ce86aba52a7c) > 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 > # 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: kernel test robot <lkp@intel.com> > > All warnings (new ones prefixed by >>, old ones prefixed by <<): > > >> drivers/clk/qcom/gcc-ipq4019.c:1247:24: warning: no previous prototype for function 'qcom_find_freq_close' [-Wmissing-prototypes] > const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > ^ > drivers/clk/qcom/gcc-ipq4019.c:1247:7: note: declare 'static' if the function is not intended to be used outside of this translation unit > const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > ^ > static > 1 warning generated. > > vim +/qcom_find_freq_close +1247 drivers/clk/qcom/gcc-ipq4019.c > > 1245 > 1246 > > 1247 const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > 1248 unsigned long rate) > 1249 { > 1250 const struct freq_tbl *last = NULL; > 1251 > 1252 for ( ; f->freq; f++) { > 1253 if (rate == f->freq) > 1254 return f; > 1255 > 1256 if (f->freq > rate) { > 1257 if (!last || > 1258 (f->freq - rate) < (rate - last->freq)) > 1259 return f; > 1260 else > 1261 return last; > 1262 } > 1263 last = f; > 1264 } > 1265 > 1266 return last; > 1267 } > 1268 > > --- > 0-DAY CI Kernel Test Service, Intel Corporation > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Mon, Jun 08, 2020 at 10:54:34AM +0200, Robert Marko wrote: > On Thu, Jun 4, 2020 at 10:25 PM kernel test robot <lkp@intel.com> wrote: > > > > Hi Robert, > > > > I love your patch! Perhaps something to improve: > > > > [auto build test WARNING on clk/clk-next] > > [also build test WARNING on v5.7 next-20200604] > > [if your patch is applied to the wrong git tree, please drop us a note to help > > improve the system. BTW, we also suggest to use '--base' option to specify the > > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > > > url: https://github.com/0day-ci/linux/commits/Robert-Marko/clk-qcom-ipq4019-fix-apss-cpu-overclocking/20200605-002859 > > base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next > > config: x86_64-allyesconfig (attached as .config) > > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project ac47588bc4ff5927a01ed6fcd269ce86aba52a7c) > > 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 > > # 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: kernel test robot <lkp@intel.com> > > > > All warnings (new ones prefixed by >>, old ones prefixed by <<): > > > > >> drivers/clk/qcom/gcc-ipq4019.c:1247:24: warning: no previous prototype for function 'qcom_find_freq_close' [-Wmissing-prototypes] > > const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > > ^ > > drivers/clk/qcom/gcc-ipq4019.c:1247:7: note: declare 'static' if the function is not intended to be used outside of this translation unit > > const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > > ^ > > static > > 1 warning generated. > > > > vim +/qcom_find_freq_close +1247 drivers/clk/qcom/gcc-ipq4019.c > > > > 1245 > > 1246 > > > 1247 const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > > 1248 unsigned long rate) > > 1249 { > > 1250 const struct freq_tbl *last = NULL; > > 1251 > > 1252 for ( ; f->freq; f++) { > > 1253 if (rate == f->freq) > > 1254 return f; > > 1255 > > 1256 if (f->freq > rate) { > > 1257 if (!last || > > 1258 (f->freq - rate) < (rate - last->freq)) > > 1259 return f; > > 1260 else > > 1261 return last; > > 1262 } > > 1263 last = f; > > 1264 } > > 1265 > > 1266 return last; > > 1267 } > > 1268 > > > > --- > > 0-DAY CI Kernel Test Service, Intel Corporation > > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org > <moved post to the bottom> > Sorry for asking, but are these warnings relevant? > GCC9.3 does not throw them > > Regards > Robert > It should if you are using make W=1, this is not a clang specific warning (it just happens that clang was the compiler for this report). It looks like qcom_find_freq_close is only used in drivers/clk/qcom/gcc-ipq4019.c, in which case it should be marked static. Cheers, Nathan
On Mon, Jun 8, 2020 at 11:07 AM Nathan Chancellor <natechancellor@gmail.com> wrote: > > On Mon, Jun 08, 2020 at 10:54:34AM +0200, Robert Marko wrote: > > On Thu, Jun 4, 2020 at 10:25 PM kernel test robot <lkp@intel.com> wrote: > > > > > > Hi Robert, > > > > > > I love your patch! Perhaps something to improve: > > > > > > [auto build test WARNING on clk/clk-next] > > > [also build test WARNING on v5.7 next-20200604] > > > [if your patch is applied to the wrong git tree, please drop us a note to help > > > improve the system. BTW, we also suggest to use '--base' option to specify the > > > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > > > > > url: https://github.com/0day-ci/linux/commits/Robert-Marko/clk-qcom-ipq4019-fix-apss-cpu-overclocking/20200605-002859 > > > base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next > > > config: x86_64-allyesconfig (attached as .config) > > > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project ac47588bc4ff5927a01ed6fcd269ce86aba52a7c) > > > 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 > > > # 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: kernel test robot <lkp@intel.com> > > > > > > All warnings (new ones prefixed by >>, old ones prefixed by <<): > > > > > > >> drivers/clk/qcom/gcc-ipq4019.c:1247:24: warning: no previous prototype for function 'qcom_find_freq_close' [-Wmissing-prototypes] > > > const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > > > ^ > > > drivers/clk/qcom/gcc-ipq4019.c:1247:7: note: declare 'static' if the function is not intended to be used outside of this translation unit > > > const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > > > ^ > > > static > > > 1 warning generated. > > > > > > vim +/qcom_find_freq_close +1247 drivers/clk/qcom/gcc-ipq4019.c > > > > > > 1245 > > > 1246 > > > > 1247 const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, > > > 1248 unsigned long rate) > > > 1249 { > > > 1250 const struct freq_tbl *last = NULL; > > > 1251 > > > 1252 for ( ; f->freq; f++) { > > > 1253 if (rate == f->freq) > > > 1254 return f; > > > 1255 > > > 1256 if (f->freq > rate) { > > > 1257 if (!last || > > > 1258 (f->freq - rate) < (rate - last->freq)) > > > 1259 return f; > > > 1260 else > > > 1261 return last; > > > 1262 } > > > 1263 last = f; > > > 1264 } > > > 1265 > > > 1266 return last; > > > 1267 } > > > 1268 > > > > > > --- > > > 0-DAY CI Kernel Test Service, Intel Corporation > > > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org > > > > <moved post to the bottom> > > > Sorry for asking, but are these warnings relevant? > > GCC9.3 does not throw them > > > > Regards > > Robert > > > > It should if you are using make W=1, this is not a clang specific > warning (it just happens that clang was the compiler for this report). Thanks, W=1 does indeed show the warning along with a not evaluated return. > > It looks like qcom_find_freq_close is only used in > drivers/clk/qcom/gcc-ipq4019.c, in which case it should be marked > static. Thanks, it does indeed solve the warning. I will send a v2 today. Regards, Robert > > Cheers, > Nathan
diff --git a/drivers/clk/qcom/gcc-ipq4019.c b/drivers/clk/qcom/gcc-ipq4019.c index ef5137fd50f3..eeed50573752 100644 --- a/drivers/clk/qcom/gcc-ipq4019.c +++ b/drivers/clk/qcom/gcc-ipq4019.c @@ -1243,6 +1243,29 @@ static const struct clk_fepll_vco gcc_fepll_vco = { .reg = 0x2f020, }; + +const struct freq_tbl *qcom_find_freq_close(const struct freq_tbl *f, + unsigned long rate) +{ + const struct freq_tbl *last = NULL; + + for ( ; f->freq; f++) { + if (rate == f->freq) + return f; + + if (f->freq > rate) { + if (!last || + (f->freq - rate) < (rate - last->freq)) + return f; + else + return last; + } + last = f; + } + + return last; +} + /* * Round rate function for APSS CPU PLL Clock divider. * It looks up the frequency table and returns the next higher frequency @@ -1255,7 +1278,7 @@ static long clk_cpu_div_round_rate(struct clk_hw *hw, unsigned long rate, struct clk_hw *p_hw; const struct freq_tbl *f; - f = qcom_find_freq(pll->freq_tbl, rate); + f = qcom_find_freq_close(pll->freq_tbl, rate); if (!f) return -EINVAL; @@ -1278,7 +1301,7 @@ static int clk_cpu_div_set_rate(struct clk_hw *hw, unsigned long rate, u32 mask; int ret; - f = qcom_find_freq(pll->freq_tbl, rate); + f = qcom_find_freq_close(pll->freq_tbl, rate); if (!f) return -EINVAL; @@ -1305,6 +1328,7 @@ static unsigned long clk_cpu_div_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { + const struct freq_tbl *f; struct clk_fepll *pll = to_clk_fepll(hw); u32 cdiv, pre_div; u64 rate; @@ -1325,7 +1349,11 @@ clk_cpu_div_recalc_rate(struct clk_hw *hw, rate = clk_fepll_vco_calc_rate(pll, parent_rate) * 2; do_div(rate, pre_div); - return rate; + f = qcom_find_freq_close(pll->freq_tbl, rate); + if (!f) + return rate; + + return f->freq; }; static const struct clk_ops clk_regmap_cpu_div_ops = {