Subject: Re: linux-next: much more building going on

From: Stephen Rothwell <[email-masked]>
Date: Sat, 8 Jan 2022 17:14:24 +1100

Hi all,

On Fri, 7 Jan 2022 17:22:06 +1100 Stephen Rothwell <[email-masked]> wrote:
>
> On Fri, 7 Jan 2022 17:13:19 +1100 Stephen Rothwell <[email-masked]> 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
:-(

-- 
Cheers,
Stephen Rothwell