CC: kbuild-...@lists.01.org
BCC: l...@intel.com
In-Reply-To: <20220411154241.50834-3-aidanmacdonald....@gmail.com>
References: <20220411154241.50834-3-aidanmacdonald....@gmail.com>
TO: Aidan MacDonald <aidanmacdonald....@gmail.com>
TO: p...@crapouillou.net
TO: robh...@kernel.org
TO: krzk...@kernel.org
TO: tsbog...@alpha.franken.de
TO: mturque...@baylibre.com
TO: sb...@kernel.org
CC: linux-m...@vger.kernel.org
CC: devicet...@vger.kernel.org
CC: linux-ker...@vger.kernel.org
CC: linux-...@vger.kernel.org

Hi Aidan,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on clk/clk-next linus/master linux/master v5.18-rc2 
next-20220412]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/intel-lab-lkp/linux/commits/Aidan-MacDonald/Fix-missing-TCU-clock-for-X1000-X1830-SoCs/20220411-234531
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago
config: arc-randconfig-m031-20220411 
(https://download.01.org/0day-ci/archive/20220412/202204121856.lxk9keyg-...@intel.com/config)
compiler: arc-elf-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

smatch warnings:
drivers/clk/ingenic/tcu.c:456 ingenic_tcu_probe() error: uninitialized symbol 
'ret'.

vim +/ret +456 drivers/clk/ingenic/tcu.c

4f89e4b8f1215c1 Paul Cercueil   2019-07-24  336  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  337  static int __init 
ingenic_tcu_probe(struct device_node *np)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  338  {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  339         const struct 
of_device_id *id = of_match_node(ingenic_tcu_of_match, np);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  340         struct ingenic_tcu *tcu;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  341         struct regmap *map;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  342         unsigned int i;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  343         int ret;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  344  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  345         map = 
device_node_to_regmap(np);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  346         if (IS_ERR(map))
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  347                 return 
PTR_ERR(map);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  348  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  349         tcu = 
kzalloc(sizeof(*tcu), GFP_KERNEL);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  350         if (!tcu)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  351                 return -ENOMEM;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  352  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  353         tcu->map = map;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  354         tcu->soc_info = 
id->data;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  355  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  356         if 
(tcu->soc_info->has_tcu_clk) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  357                 tcu->clk = 
of_clk_get_by_name(np, "tcu");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  358                 if 
(IS_ERR(tcu->clk)) {
8c04eee82a9d67a Aidan MacDonald 2022-04-11  359                         /*
8c04eee82a9d67a Aidan MacDonald 2022-04-11  360                          * Old 
device trees for some SoCs did not include the
8c04eee82a9d67a Aidan MacDonald 2022-04-11  361                          * TCU 
clock because this driver (incorrectly) didn't
8c04eee82a9d67a Aidan MacDonald 2022-04-11  362                          * use 
it. In this case we complain loudly and attempt
8c04eee82a9d67a Aidan MacDonald 2022-04-11  363                          * to 
continue without the clock, which might work if
8c04eee82a9d67a Aidan MacDonald 2022-04-11  364                          * 
booting with workarounds like "clk_ignore_unused".
8c04eee82a9d67a Aidan MacDonald 2022-04-11  365                          */
8c04eee82a9d67a Aidan MacDonald 2022-04-11  366                         if 
(tcu->soc_info->allow_missing_tcu_clk &&
8c04eee82a9d67a Aidan MacDonald 2022-04-11  367                             
PTR_ERR(tcu->clk) == -EINVAL) {
8c04eee82a9d67a Aidan MacDonald 2022-04-11  368                                 
pr_warn("TCU clock missing from device tree, please update your device tree\n");
8c04eee82a9d67a Aidan MacDonald 2022-04-11  369                                 
tcu->clk = NULL;
8c04eee82a9d67a Aidan MacDonald 2022-04-11  370                         } else {
8c04eee82a9d67a Aidan MacDonald 2022-04-11  371                                 
pr_crit("Cannot get TCU clock from device tree\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  372                                 
goto err_free_tcu;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  373                         }
8c04eee82a9d67a Aidan MacDonald 2022-04-11  374                 } else {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  375                         ret = 
clk_prepare_enable(tcu->clk);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  376                         if 
(ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  377                                 
pr_crit("Unable to enable TCU clock\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  378                                 
goto err_put_clk;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  379                         }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  380                 }
8c04eee82a9d67a Aidan MacDonald 2022-04-11  381         }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  382  
e620a1e061c4738 Stephen Kitt    2019-09-27  383         tcu->clocks = 
kzalloc(struct_size(tcu->clocks, hws, TCU_CLK_COUNT),
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  384                               
GFP_KERNEL);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  385         if (!tcu->clocks) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  386                 ret = -ENOMEM;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  387                 goto 
err_clk_disable;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  388         }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  389  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  390         tcu->clocks->num = 
TCU_CLK_COUNT;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  391  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  392         for (i = 0; i < 
tcu->soc_info->num_channels; i++) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  393                 ret = 
ingenic_tcu_register_clock(tcu, i, TCU_PARENT_EXT,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  394                                 
                 &ingenic_tcu_clk_info[i],
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  395                                 
                 tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  396                 if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  397                         
pr_crit("cannot register clock %d\n", i);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  398                         goto 
err_unregister_timer_clocks;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  399                 }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  400         }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  401  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  402         /*
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  403          * We set EXT as the 
default parent clock for all the TCU clocks
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  404          * except for the 
watchdog one, where we set the RTC clock as the
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  405          * parent. Since the 
EXT and PCLK are much faster than the RTC clock,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  406          * the watchdog would 
kick after a maximum time of 5s, and we might
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  407          * want a slower 
kicking time.
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  408          */
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  409         ret = 
ingenic_tcu_register_clock(tcu, TCU_CLK_WDT, TCU_PARENT_RTC,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  410                                 
         &ingenic_tcu_watchdog_clk_info,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  411                                 
         tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  412         if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  413                 pr_crit("cannot 
register watchdog clock\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  414                 goto 
err_unregister_timer_clocks;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  415         }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  416  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  417         if 
(tcu->soc_info->has_ost) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  418                 ret = 
ingenic_tcu_register_clock(tcu, TCU_CLK_OST,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  419                                 
                 TCU_PARENT_EXT,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  420                                 
                 &ingenic_tcu_ost_clk_info,
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  421                                 
                 tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  422                 if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  423                         
pr_crit("cannot register ost clock\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  424                         goto 
err_unregister_watchdog_clock;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  425                 }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  426         }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  427  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  428         ret = 
of_clk_add_hw_provider(np, of_clk_hw_onecell_get, tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  429         if (ret) {
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  430                 pr_crit("cannot 
add OF clock provider\n");
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  431                 goto 
err_unregister_ost_clock;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  432         }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  433  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  434         ingenic_tcu = tcu;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  435  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  436         return 0;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  437  
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  438  err_unregister_ost_clock:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  439         if 
(tcu->soc_info->has_ost)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  440                 
clk_hw_unregister(tcu->clocks->hws[i + 1]);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  441  err_unregister_watchdog_clock:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  442         
clk_hw_unregister(tcu->clocks->hws[i]);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  443  err_unregister_timer_clocks:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  444         for (i = 0; i < 
tcu->clocks->num; i++)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  445                 if 
(tcu->clocks->hws[i])
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  446                         
clk_hw_unregister(tcu->clocks->hws[i]);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  447         kfree(tcu->clocks);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  448  err_clk_disable:
8c04eee82a9d67a Aidan MacDonald 2022-04-11  449         if (tcu->clk)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  450                 
clk_disable_unprepare(tcu->clk);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  451  err_put_clk:
8c04eee82a9d67a Aidan MacDonald 2022-04-11  452         if (tcu->clk)
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  453                 
clk_put(tcu->clk);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  454  err_free_tcu:
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  455         kfree(tcu);
4f89e4b8f1215c1 Paul Cercueil   2019-07-24 @456         return ret;
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  457  }
4f89e4b8f1215c1 Paul Cercueil   2019-07-24  458  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to