Re: [PATCH] watchdog: ixp4xx: Use devm_clk_get_enabled() helper

From: Guenter Roeck
Date: Sun Jan 01 2023 - 14:31:28 EST


On Sun, Jan 01, 2023 at 06:52:35PM +0100, Christophe JAILLET wrote:
[ ... ]
> > >
> > > Here is what do.
> > >
> > > make allmodconfig
> > > make -j8 drivers/watchdog/ixp4xx_wdt.o
> > >
> > > And I get:
> > > DESCEND objtool
> > > CALL scripts/checksyscalls.sh
> > > CC drivers/watchdog/ixp4xx_wdt.o
> > > drivers/watchdog/ixp4xx_wdt.c: In function ‘ixp4xx_wdt_probe’:
> > > drivers/watchdog/ixp4xx_wdt.c:122:15: error: implicit declaration of
> > > function ‘read_cpuid_id’ [-Werror=implicit-function-declaration]
> > > 122 | if (!(read_cpuid_id() & 0xf) && !cpu_is_ixp46x()) {
> > > | ^~~~~~~~~~~~~
> > > cc1: all warnings being treated as errors
> > > make[3]: *** [scripts/Makefile.build:252 : drivers/watchdog/ixp4xx_wdt.o]
> > > Erreur 1
> > > make[2]: *** [scripts/Makefile.build:504 : drivers/watchdog] Erreur 2
> > > make[1]: *** [scripts/Makefile.build:504 : drivers] Erreur 2
> > > make: *** [Makefile:2011 : .] Erreur 2
> > >
> > >
> > > I do agree with you that:
> > >
> > > - Kconfig looks fine
> > > config IXP4XX_WATCHDOG
> > > tristate "IXP4xx Watchdog"
> > > depends on ARCH_IXP4XX
> > >
> > > - Makefile looks fine
> > > obj-$(CONFIG_IXP4XX_WATCHDOG) += ixp4xx_wdt.o
> > >
> > > - .config looks fine
> > > IXP4XX_WATCHDOG is NOT defined
> > >
> > > - make drivers/watchdog/ looks fine
> > > No error and ixp4xx_wdt.o is NOT built.
> > >
> > >
> > > However, in the past (if I recollect correctly :) ), a "make <something_that
> > > depends_on_a_config_variable_that_is_not_defined>" returned an error stating
> > > that no rule existed to build the specified target.
> > >
> >
> > This is not correct. It only applies if the target directory Makefile is
> > excluded by the make flags, or possibly if the target file is a complex
> > one build from various source files.
> >
> > > I sometimes needed to tweak the Kconfig files to force some compilation when
> > > I didn't have the right tool chain or configuration.
> > > It was maybe not the best practice, but it worked most of the time.
> > >
> > >
> > > Now, with the example above, such a compilation attempt is possible. It is
> > > maybe normal (because of a change somewhere in the way the kernel is built,
> > > because of an updated toolchain on my machine, ...)
> > > This is just fine for me, but looked really surprising.
> > >
> > > That is why I first thought that something was missing in a Kconfig file.
> > >
> > >
> > > So my comments are just a surprise to me to something that seems not to
> > > behave the same as before.
> > >
> > I don't think anything changed. It always worked like that for me.
> > I would suggest to go back to an older kernel and try it there.
> > You'll see exactly the same error. Maybe you just never encountered
> > a file like that.
>
> git reset --hard next-20210111 (randomly chosen date)
> make allmodconfig
> make clean
> make -j7 drivers/watchdog/ixp4xx_wdt.o (too build most of the needed stuff
> to build a kernel)
> touch drivers/watchdog/ixp4xx_wdt.c
> make -j7 drivers/watchdog/ixp4xx_wdt.o (too build this file only)
>
> DESCEND objtool
> CALL scripts/atomic/check-atomics.sh
> CALL scripts/checksyscalls.sh
> make[3]: *** Aucune règle pour fabriquer la cible «
> drivers/watchdog/ixp4xx_wdt.o ». Arrêt.
> make[2]: *** [scripts/Makefile.build:471 : __build] Erreur 2
> make[1]: *** [scripts/Makefile.build:496 : drivers/watchdog] Erreur 2
> make: *** [Makefile:1805 : drivers] Erreur 2
>

Turns out the behavior preferred by you was introduced in v5.4 with
commit 394053f4a4b3 ("kbuild: make single targets work more correctly")
and undone with commit cc306abd19e8 ("kbuild: fix and refactor single
target build") in v6.1. As for what is the expected behavior, I can't say.
I for my part had not noticed that the behavior had changed between v5.4
and v6.0.

I would suggest to discuss details with Yamada-san.

Thanks,
Guenter