lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 12 Nov 2021 16:39:04 -0800
From:   Randy Dunlap <rdunlap@...radead.org>
To:     Jonathan Cameron <jic23@...nel.org>
Cc:     linux-kernel@...r.kernel.org, kernel test robot <lkp@...el.com>,
        Artur Rojek <contact@...ur-rojek.eu>,
        Paul Cercueil <paul@...pouillou.net>,
        linux-mips@...r.kernel.org, Lars-Peter Clausen <lars@...afoo.de>,
        linux-iio@...r.kernel.org, Florian Fainelli <f.fainelli@...il.com>,
        Andy Shevchenko <andy.shevchenko@...il.com>,
        Russell King <linux@...linux.org.uk>, linux-clk@...r.kernel.org
Subject: Re: [PATCH v2] iio/adc: ingenic: fix (MIPS) ingenic-adc build errors

On 11/12/21 9:29 AM, Jonathan Cameron wrote:
> On Tue,  9 Nov 2021 18:37:55 -0800
> Randy Dunlap <rdunlap@...radead.org> wrote:
> 
>> MIPS does not always provide clk*() interfaces and there are no
>> always-present stubs for them, so depending on "MIPS || COMPILE_TEST"
>> is not strong enough to prevent build errors.
>>
>> Likewise MACH_INGENIC_SOC || COMPILE_TEST is not strong enough
>> since if only COMPILE_TEST=y (with some other MIPS MACH_ or CPU or
>> BOARD setting), there are still the same build errors.
>>
>> It looks like depending on MACH_INGENIC is the only thing that is
>> sufficient here in order to prevent build errors.
>>
>> mips-linux-ld: drivers/iio/adc/ingenic-adc.o: in function `jz4770_adc_init_clk_div':
>> ingenic-adc.c:(.text+0xe4): undefined reference to `clk_get_parent'
>> mips-linux-ld: drivers/iio/adc/ingenic-adc.o: in function `jz4725b_adc_init_clk_div':
>> ingenic-adc.c:(.text+0x1b8): undefined reference to `clk_get_parent'
>>
>> Fixes: 1a78daea107d ("IIO: add Ingenic JZ47xx ADC driver.")
>> Signed-off-by: Randy Dunlap <rdunlap@...radead.org>
>> Reported-by: kernel test robot <lkp@...el.com>
>> Cc: Artur Rojek <contact@...ur-rojek.eu>
>> Cc: Paul Cercueil <paul@...pouillou.net>
>> Cc: linux-mips@...r.kernel.org
>> Cc: Jonathan Cameron <jic23@...nel.org>
>> Cc: Lars-Peter Clausen <lars@...afoo.de>
>> Cc: linux-iio@...r.kernel.org
>> Cc: Florian Fainelli <f.fainelli@...il.com>
>> Cc: Andy Shevchenko <andy.shevchenko@...il.com>
> 
> I'm a bit confused.  There are stubs in include/linux/clk.h for these.
> Why do those not apply here? Are these platforms built with CONFIG_CLK but
> don't provide all the functions?
> 
> That sounds highly error prone and rather defeats the object of the
> stubs.  Could we either provide the missing stubs, or solve this some other
> way.  I'm not keen to massively cut the build coverage this driver is getting
> by dropping COMPILE_TEST if there is any route to avoid doing so.

I'm all for that (above), but it's a mess.

> Based on the guess than any platform with clks must be able to turn them on
> I grepped for int clk_enable() and there seem to be only two possiblities
> bcm63xx and lantiq as sources of the build breakage.

CONFIG_BCM63XX=y
# CONFIG_MACH_INGENIC_SOC is not set
CONFIG_INGENIC_ADC=y
CONFIG_HAVE_CLK=y


According to the build error messages (above), clk_get_parent()
is missing. Looking at <linux/clk.h>, for CONFIG_HAVE_CLK=y,
there is a prototype for clk_get_parent(), and if CONFIG_HAVE_CLK
is not set, there is a stub for it.

Now look at drivers/clk/clk.c and drivers/clk/Makefile:

clk_get_parent() is defined in clk.c, which is built when
CONFIG_COMMON_CLK=y, but that is not set in this .config file.

CONFIG_HAVE_CLK=y, but that doesn't get clk_get_parent()
compiled.

So to me it is a disparity or incongruity between HAVE_CLK and COMMON_CLK.

Russell- do you have any suggestions for how to straighten
this out?


> Jonathan
> 
>> ---
>> v2: use MACH_INGENIC instead of MACH_INGENIC_SOC (thanks, Paul)
>>
>>   drivers/iio/adc/Kconfig |    2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> --- linux-next-20211105.orig/drivers/iio/adc/Kconfig
>> +++ linux-next-20211105/drivers/iio/adc/Kconfig
>> @@ -501,7 +501,7 @@ config INA2XX_ADC
>>   
>>   config INGENIC_ADC
>>   	tristate "Ingenic JZ47xx SoCs ADC driver"
>> -	depends on MIPS || COMPILE_TEST
>> +	depends on MACH_INGENIC
>>   	select IIO_BUFFER
>>   	help
>>   	  Say yes here to build support for the Ingenic JZ47xx SoCs ADC unit.
> 


-- 
~Randy

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ