Re: linux-next: much more building going on

From: Masahiro Yamada
Date: Sat Jan 08 2022 - 05:47:24 EST


On Sat, Jan 8, 2022 at 3:14 PM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
>
> Hi all,
>
> On Fri, 7 Jan 2022 17:22:06 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
> >
> > On Fri, 7 Jan 2022 17:13:19 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
> > >
> > > Since yesterday, my builds are taking much longer and it seems just
> > > about everything is being rebuilt when there should be very little done.
> > >
> > > One example is after mergeing the clockevents tree, the diffstat looks
> > > like this:
> > >
> > > $ git diff --stat HEAD^..
> > > .../devicetree/bindings/timer/cdns,ttc.yaml | 3 +
> > > .../bindings/timer/mstar,msc313e-timer.yaml | 46 ++++
> > > .../devicetree/bindings/timer/nxp,tpm-timer.yaml | 6 +-
> > > .../devicetree/bindings/timer/renesas,ostm.yaml | 20 +-
> > > .../bindings/timer/rockchip,rk-timer.yaml | 1 -
> > > MAINTAINERS | 1 +
> > > drivers/clocksource/Kconfig | 12 +-
> > > drivers/clocksource/Makefile | 1 +
> > > drivers/clocksource/exynos_mct.c | 52 +++--
> > > drivers/clocksource/renesas-ostm.c | 39 +++-
> > > drivers/clocksource/timer-imx-sysctr.c | 6 +-
> > > drivers/clocksource/timer-msc313e.c | 253 +++++++++++++++++++++
> > > drivers/clocksource/timer-pistachio.c | 3 +-
> > > 13 files changed, 411 insertions(+), 32 deletions(-)
> > >
> > > but my powerpc and arm builds rebuilt basically everything.
> > >
> > > This happens for a lot of merges - though some do not rebuild very much
> > > at all.
> > >
> > > Any ideas about what changed yesterday? (I directed this to the kbuild
> > > tree maintainer since the kbuild tree was updated yesterday - though
> > > that may be a coincidence).
> >
> > OK, it *may* have something to do with Kconfig file updates for example with this diffstat:
> >
> > .../memory-controllers/synopsys,ddrc-ecc.yaml | 1 +
> > drivers/edac/Kconfig | 2 +-
> > drivers/edac/amd64_edac.c | 36 ++++++++++++++-
> > drivers/edac/amd64_edac.h | 8 +++-
> > drivers/edac/edac_mc.c | 2 +
> > drivers/edac/sb_edac.c | 2 +-
> > drivers/edac/sifive_edac.c | 2 +-
> > drivers/edac/synopsys_edac.c | 52 ++++++++++++++++++----
> > drivers/ras/cec.c | 2 +-
> > include/linux/edac.h | 6 +++
> > 10 files changed, 98 insertions(+), 15 deletions(-)
> >
> > And only this Kconfig change:
> >
> > $ git diff HEAD^.. drivers/edac/Kconfig
> > diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig
> > index 2fc4c3f91fd5..58ab63642e72 100644
> > --- a/drivers/edac/Kconfig
> > +++ b/drivers/edac/Kconfig
> > @@ -484,7 +484,7 @@ config EDAC_ARMADA_XP
> >
> > config EDAC_SYNOPSYS
> > tristate "Synopsys DDR Memory Controller"
> > - depends on ARCH_ZYNQ || ARCH_ZYNQMP
> > + depends on ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_INTEL_SOCFPGA
> > help
> > Support for error detection and correction on the Synopsys DDR
> > memory controller.
> >
> > I noticed that the following files have changed (timestamp at least) in
> > the object directory:
> >
> > -rw-r--r-- 1 sfr users 46271 Jan 7 17:09 ./include/config/auto.conf.cmd
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/DEFAULT_TCP_CONG
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/DEFAULT_INIT
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/BUILD_SALT
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/RTC_SYSTOHC_DEVICE
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/EXTRA_TARGETS
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/CC_IMPLICIT_FALLTHROUGH
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/RTC_HCTOSYS_DEVICE
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/EXTRA_FIRMWARE
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/DEFAULT_HOSTNAME
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/CC_VERSION_TEXT
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/MODPROBE_PATH
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/LOCALVERSION
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/INITRAMFS_SOURCE
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/FAT_DEFAULT_IOCHARSET
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/CMDLINE
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/NLS_DEFAULT
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/MAGIC_SYSRQ_SERIAL_SEQUENCE
> > -rw-r--r-- 1 sfr users 0 Jan 7 17:09 ./include/config/LSM
> > -rw-r--r-- 1 sfr users 54294 Jan 7 17:09 ./include/generated/autoconf.h
> > -rw-r--r-- 1 sfr users 39198 Jan 7 17:09 ./include/config/auto.conf
> >
> > then lots more is rebuilt.
>
> Bisection points to commit
>
> 33c1957574b6 ("kbuild: do not quote string values in include/config/auto.conf")
>
> from the kbuild tree and indeed if I revert commits
>
> ec769168623b ("microblaze: use built-in function to get CPU_{MAJOR,MINOR,REV}")
> 98bb79d61f0c ("certs: move scripts/extract-cert to certs/")
> 33c1957574b6 ("kbuild: do not quote string values in include/config/auto.conf")
>
> from the merge of the kbuild tree into linux-next (up to that point),
> the problem goes away.
>
> My test case is this:
>
> $ rm -rf ../test
> $ mkdir ../test
> $ make ARCH=powerpc O=../test -s ppc64_defconfig
> $ make ARCH=powerpc O=../test -j40 -O init/main.o
> (edit drivers/edac/Kconfig as above)
> $ make ARCH=powerpc O=../test -s ppc64_defconfig
> $ make ARCH=powerpc O=../test -j40 -O init/main.o
>
> In the good case, none of the files in ../test/include/config
> representing CONFIG_ options are changed and init/main.o is not
> rebuilt. In the bad case some of the files above (in
> ../test/include/config) are touched and init/main.o is rebuilt.
>
> Please see if you can figure out what actually is wrong with
> 33c1957574b6 or else remove those commits from the kbuild tree (or
> revert them). This extra rebuilding is adding about 7 hours to my day
> :-(


Sorry for the annoyance.
As you noticed, this is a bug of 33c1957574b6.

I fixed it and updated linux-kbuild/for-next.

Hopefully, it should be fine for monday's linux-next.



--
Best Regards
Masahiro Yamada