Hi Linus,

As expected, kernel builds started failing in less-common configurations.  In 
this particular case the culprit is amdgpu driver when built for 32-bit ARM in 
allmodconfig configuration using tip-of-trunk GCC.

Hi Alex, [picking your name from “git log drivers/gpu/drm/amd/amdgpu/amdgpu.h”],

Would you please take a look?  Let me know if the problem doesn’t reproduce for 
you, and I’ll help to investigate.


00:22:45 In file included from drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c:29:
00:22:45 drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c: In function ‘gmc_v6_0_set_prt’:
00:22:45 drivers/gpu/drm/amd/amdgpu/amdgpu.h:1227:53: error: ‘<<’ in boolean 
context, did you mean ‘<’? [-Werror=int-in-bool-context]
00:22:45  1227 |          (REG_FIELD_MASK(reg, field) & ((field_val) << 
REG_FIELD_SHIFT(reg, field))))
00:22:45       |                                        
~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00:22:45 drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c:430:15: note: in expansion of 
macro ‘REG_SET_FIELD’
00:22:45   430 |         tmp = REG_SET_FIELD(tmp, VM_PRT_CNTL,
00:22:45       |               ^~~~~~~~~~~~~
00:22:45 cc1: all warnings being treated as errors
00:22:45 make[4]: *** [scripts/Makefile.build:277: 
drivers/gpu/drm/amd/amdgpu/gmc_v6_0.o] Error 1
00:40:28 make[4]: Target '__build' not remade because of errors.
00:40:28 make[3]: *** [scripts/Makefile.build:540: drivers/gpu/drm/amd/amdgpu] 
Error 2
00:41:17 make[3]: Target '__build' not remade because of errors.
00:41:17 make[2]: *** [scripts/Makefile.build:540: drivers/gpu/drm] Error 2
00:41:17 make[2]: Target '__build' not remade because of errors.
00:41:17 make[1]: *** [scripts/Makefile.build:540: drivers/gpu] Error 2
00:41:17 make[1]: Target '__build' not remade because of errors.
00:41:17 make: *** [Makefile:1872: drivers] Error 2
00:41:17 make: Target '__all' not remade because of errors.

Regards,

--
Maxim Kuvyrkov
https://www.linaro.org

> On 8 Sep 2021, at 11:40, ci_not...@linaro.org wrote:
> 
> Successfully identified regression in *linux* in CI configuration 
> tcwg_kernel/gnu-master-arm-mainline-allmodconfig.  So far, this commit has 
> regressed CI configurations:
> - tcwg_kernel/gnu-master-arm-mainline-allmodconfig
> 
> Culprit:
> <cut>
> commit 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
> Author: Linus Torvalds <torva...@linux-foundation.org>
> Date:   Sun Sep 5 11:24:05 2021 -0700
> 
>    Enable '-Werror' by default for all kernel builds
> 
>    ... but make it a config option so that broken environments can disable
>    it when required.
> 
>    We really should always have a clean build, and will disable specific
>    over-eager warnings as required, if we can't fix them.  But while I
>    fairly religiously enforce that in my own tree, it doesn't get enforced
>    by various build robots that don't necessarily report warnings.
> 
>    So this just makes '-Werror' a default compiler flag, but allows people
>    to disable it for their configuration if they have some particular
>    issues.
> 
>    Occasionally, new compiler versions end up enabling new warnings, and it
>    can take a while before we have them fixed (or the warnings disabled if
>    that is what it takes), so the config option allows for that situation.
> 
>    Hopefully this will mean that I get fewer pull requests that have new
>    warnings that were not noticed by various automation we have in place.
> 
>    Knock wood.
> 
>    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
> </cut>
> 
> Results regressed to (for first_bad == 
> 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151)
> # reset_artifacts:
> -10
> # build_abe binutils:
> -9
> # build_abe stage1:
> -5
> # build_abe qemu:
> -2
> # linux_n_obj:
> 21769
> # First few build errors in logs:
> 
> from (for last_good == fd47ff55c9c31101fcc06d20cb381da3d4089bd5)
> # reset_artifacts:
> -10
> # build_abe binutils:
> -9
> # build_abe stage1:
> -5
> # build_abe qemu:
> -2
> # linux_n_obj:
> 29880
> # linux build successful:
> all
> 
> Artifacts of last_good build: 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/build-fd47ff55c9c31101fcc06d20cb381da3d4089bd5/
> Artifacts of first_bad build: 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/build-3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151/
> Build top page/logs: 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/
> 
> Configuration details:
> 
> 
> Reproduce builds:
> <cut>
> mkdir investigate-linux-3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
> cd investigate-linux-3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
> 
> git clone https://git.linaro.org/toolchain/jenkins-scripts
> 
> mkdir -p artifacts/manifests
> curl -o artifacts/manifests/build-baseline.sh 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/manifests/build-baseline.sh
>  --fail
> curl -o artifacts/manifests/build-parameters.sh 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/manifests/build-parameters.sh
>  --fail
> curl -o artifacts/test.sh 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/test.sh
>  --fail
> chmod +x artifacts/test.sh
> 
> # Reproduce the baseline build (build all pre-requisites)
> ./jenkins-scripts/tcwg_kernel-build.sh @@ 
> artifacts/manifests/build-baseline.sh
> 
> # Save baseline build state (which is then restored in artifacts/test.sh)
> mkdir -p ./bisect
> rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ 
> --exclude /linux/ ./ ./bisect/baseline/
> 
> cd linux
> 
> # Reproduce first_bad build
> git checkout --detach 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
> ../artifacts/test.sh
> 
> # Reproduce last_good build
> git checkout --detach fd47ff55c9c31101fcc06d20cb381da3d4089bd5
> ../artifacts/test.sh
> 
> cd ..
> </cut>
> 
> History of pending regressions and results: 
> https://git.linaro.org/toolchain/ci/base-artifacts.git/log/?h=linaro-local/ci/tcwg_kernel/gnu-master-arm-mainline-allmodconfig
> 
> Artifacts: 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/artifact/artifacts/
> Build log: 
> https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-mainline-allmodconfig/28/consoleText
> 
> Full commit (up to 1000 lines):
> <cut>
> commit 3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
> Author: Linus Torvalds <torva...@linux-foundation.org>
> Date:   Sun Sep 5 11:24:05 2021 -0700
> 
>    Enable '-Werror' by default for all kernel builds
> 
>    ... but make it a config option so that broken environments can disable
>    it when required.
> 
>    We really should always have a clean build, and will disable specific
>    over-eager warnings as required, if we can't fix them.  But while I
>    fairly religiously enforce that in my own tree, it doesn't get enforced
>    by various build robots that don't necessarily report warnings.
> 
>    So this just makes '-Werror' a default compiler flag, but allows people
>    to disable it for their configuration if they have some particular
>    issues.
> 
>    Occasionally, new compiler versions end up enabling new warnings, and it
>    can take a while before we have them fixed (or the warnings disabled if
>    that is what it takes), so the config option allows for that situation.
> 
>    Hopefully this will mean that I get fewer pull requests that have new
>    warnings that were not noticed by various automation we have in place.
> 
>    Knock wood.
> 
>    Signed-off-by: Linus Torvalds <torva...@linux-foundation.org>
> ---
> Makefile     |  3 +++
> init/Kconfig | 14 ++++++++++++++
> 2 files changed, 17 insertions(+)
> 
> diff --git a/Makefile b/Makefile
> index 6bc1c5b17a62..d45fc2edf186 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -785,6 +785,9 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG)      := 
> -fstack-protector-strong
> 
> KBUILD_CFLAGS += $(stackp-flags-y)
> 
> +KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror
> +KBUILD_CFLAGS += $(KBUILD_CFLAGS-y)
> +
> ifdef CONFIG_CC_IS_CLANG
> KBUILD_CPPFLAGS += -Qunused-arguments
> # The kernel builds with '-std=gnu89' so use of GNU extensions is acceptable.
> diff --git a/init/Kconfig b/init/Kconfig
> index e708180e9a59..8cb97f141b70 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -137,6 +137,20 @@ config COMPILE_TEST
>         here. If you are a user/distributor, say N here to exclude useless
>         drivers to be distributed.
> 
> +config WERROR
> +     bool "Compile the kernel with warnings as errors"
> +     default y
> +     help
> +       A kernel build should not cause any compiler warnings, and this
> +       enables the '-Werror' flag to enforce that rule by default.
> +
> +       However, if you have a new (or very old) compiler with odd and
> +       unusual warnings, or you have some architecture with problems,
> +       you may need to disable this config option in order to
> +       successfully build the kernel.
> +
> +       If in doubt, say Y.
> +
> config UAPI_HEADER_TEST
>       bool "Compile test UAPI headers"
>       depends on HEADERS_INSTALL && CC_CAN_LINK
> </cut>

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to