Hello,

kbuild test robot <l...@intel.com> wrote on Fri, 23 Nov 2018 16:30:00
+0800:

> Hi Miquel,
> 
> I love your patch! Yet something to improve:
> 
> [auto build test ERROR on clk/clk-next]
> [also build test ERROR on v4.20-rc3 next-20181122]
> [if your patch is applied to the wrong git tree, please drop us a note to 
> help improve the system]
> 
> url:    
> https://github.com/0day-ci/linux/commits/Miquel-Raynal/Link-consumer-with-clock-driver/20181123-113833
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next
> config: sh-titan_defconfig (attached as .config)
> compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
> reproduce:
>         wget 
> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
> ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         GCC_VERSION=7.2.0 make.cross ARCH=sh 
> 
> All errors (new ones prefixed by >>):
> 
>    drivers//clk/clkdev.c: In function 'clk_get':
> >> drivers//clk/clkdev.c:209:3: error: implicit declaration of function 
> >> '__clk_device_link'; did you mean '__clk_free_clk'? 
> >> [-Werror=implicit-function-declaration]  
>       __clk_device_link(dev, clk);
>       ^~~~~~~~~~~~~~~~~
>       __clk_free_clk
>    drivers//clk/clkdev.c: In function 'clk_put':
> >> drivers//clk/clkdev.c:217:2: error: implicit declaration of function 
> >> '__clk_device_unlink'; did you mean 'device_online'? 
> >> [-Werror=implicit-function-declaration]  
>      __clk_device_unlink(clk);
>      ^~~~~~~~~~~~~~~~~~~
>      device_online
>    cc1: some warnings being treated as errors

I figured thanks to this report that this code won't compile with
architectures not compliant to the common clock framework. I see there
is the following block in clkdev.c.

#if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK)
#else
#endif

Would you agree with me adding dummy functions in the #else section
like:

static inline void __clk_device_link(struct device *consumer, struct clk *clk)
{
       return;
}

static inline void __clk_device_unlink(struct clk *clk)
{
       return;
}

Do you want me to also declare these functions in the #if section
(with the external keyword) to balance the above declarations?

Thanks for your input.
Miquèl

> 
> vim +209 drivers//clk/clkdev.c
> 
>    193        
>    194        struct clk *clk_get(struct device *dev, const char *con_id)
>    195        {
>    196                const char *dev_id = dev ? dev_name(dev) : NULL;
>    197                struct clk *clk = NULL;
>    198        
>    199                if (dev && dev->of_node) {
>    200                        clk = __of_clk_get_by_name(dev->of_node, 
> dev_id, con_id);
>    201                        if (PTR_ERR(clk) == -EPROBE_DEFER)
>    202                                return clk;
>    203                }
>    204        
>    205                if (IS_ERR_OR_NULL(clk))
>    206                        clk = clk_get_sys(dev_id, con_id);
>    207        
>    208                if (!IS_ERR(clk))
>  > 209                        __clk_device_link(dev, clk);  
>    210        
>    211                return clk;
>    212        }
>    213        EXPORT_SYMBOL(clk_get);
>    214        
>    215        void clk_put(struct clk *clk)
>    216        {
>  > 217                __clk_device_unlink(clk);  
>    218                __clk_put(clk);
>    219        }
>    220        EXPORT_SYMBOL(clk_put);
>    221        
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Reply via email to