* Re: Regression: commit 987fdfec2410 causes build to incorrectly issue warning
2021-07-02 14:48 ` Russell King (Oracle)
@ 2021-07-05 0:31 ` Masahiro Yamada
0 siblings, 0 replies; 3+ messages in thread
From: Masahiro Yamada @ 2021-07-05 0:31 UTC (permalink / raw)
To: Russell King (Oracle)
Cc: Catalin Marinas, Will Deacon, Nathan Chancellor, linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 2429 bytes --]
On Fri, Jul 2, 2021 at 11:48 PM Russell King (Oracle)
<linux@armlinux.org.uk> wrote:
>
> On Fri, Jul 02, 2021 at 02:13:01PM +0100, Russell King - ARM Linux admin wrote:
> > Hi,
> >
> > Commit 987fdfec2410 ("arm64: move --fix-cortex-a53-843419 linker test to
> > Kconfig") breaks the ability to detect linker support for this option.
> > Building 5.13 for aarch64 with Debian binutils 2.31.1 results in:
> >
> > .../arch/arm64/Makefile:25: ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum
> >
> > This is because ARM64_LD_HAS_FIX_ERRATUM_843419 is not set in the
> > Kconfig, indicating that the Kconfig test for linker support for
> > --fix-cortex-a53-843419 has failed, yet this version of binutils does
> > support this option:
> >
> > $ aarch64-linux-gnu-ld --help | grep -e --fix-cortex-a53-843419 | wc -l
> > 8
> >
> > Reverting this commit fixes the problem for me.
>
> Sadly, while reverting the commit fixes it during the initial build
> run, the warning pops up when doing the installation step.
>
> I'm not entirely sure what's going on here. Having put the commit
> back, and re-run strace (and waited ages) it appears that the
> ld-option command does succeed, and I eventually end up with the
> option present in .config.
>
> However, it seems that if we have a .config that has the errata
> enabled, but doesn't contain the _LD_ option, then we end up issuing
> the warning before we re-run the Kconfig step.
>
> Eventually, I seem to have ended up with the _LD_ option set. Quite
> how, I don't know. When I originally noticed the problem, I had done
> a full rebuild. I then re-ran the build several times, and the warning
> popped up every time.
>
> Now that I've touched arch/arm64/Kconfig and re-run the build, it
> doesn't warn anymore - in fact, while investigating this and stracing,
> the option magically set itself and the problem has vanished.
>
> There is definitely weirdness and unpredictability going on with
> Kbuild - I can't explain it. Maybe its just become way to complex...
>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
I do not know your issue occurs, and not perfectly sure if this
is related to your case, but I also see some cases where this false-positive
warning is displayed.
Could you please try the attached patch?
--
Best Regards
Masahiro Yamada
[-- Attachment #2: 0001-arm64-move-warning-about-toolchains-to-archprepare.patch --]
[-- Type: text/x-patch, Size: 2962 bytes --]
From 39ad4bd3b42a7ba3d512254f5a0d23aae1295743 Mon Sep 17 00:00:00 2001
From: Masahiro Yamada <masahiroy@kernel.org>
Date: Mon, 5 Jul 2021 01:49:18 +0900
Subject: [PATCH] arm64: move warning about toolchains to archprepare
Commit 987fdfec2410 ("arm64: move --fix-cortex-a53-843419 linker test to
Kconfig") fixed the false-positive warning in the installation step.
Yet, there are some cases where this false-positive is shown. For example,
you can see it when you cross 987fdfec2410 during git-bisect.
$ git checkout 987fdfec2410^
[ snip ]
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig all
[ snip ]
$ git checkout v5.13
[ snip]
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig all
[ snip ]
arch/arm64/Makefile:25: ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum
In the stale include/config/auto.config, CONFIG_ARM64_ERRATUM_843419=y
is set without CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419, so the warning
is displayed while parsing the Makefiles.
Make will restart with the updated include/config/auto.config, hence
CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419 will be set eventually, but
this warning is a surprise for users.
Commit 25896d073d8a ("x86/build: Fix compiler support check for
CONFIG_RETPOLINE") addressed a similar issue.
Move $(warning ...) out of the parse stage of Makefiles.
The same applies to CONFIG_ARM64_USE_LSE_ATOMICS.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
arch/arm64/Makefile | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 3b5b1c480449..8b6fdd466d92 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -21,19 +21,11 @@ LDFLAGS_vmlinux += -shared -Bsymbolic -z notext \
endif
ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
- ifneq ($(CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419),y)
-$(warning ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum)
- else
+ ifeq ($(CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419),y)
LDFLAGS_vmlinux += --fix-cortex-a53-843419
endif
endif
-ifeq ($(CONFIG_ARM64_USE_LSE_ATOMICS), y)
- ifneq ($(CONFIG_ARM64_LSE_ATOMICS), y)
-$(warning LSE atomics not supported by binutils)
- endif
-endif
-
cc_has_k_constraint := $(call try-run,echo \
'int main(void) { \
asm volatile("and w0, w0, %w0" :: "K" (4294967295)); \
@@ -177,6 +169,17 @@ vdso_install:
archprepare:
$(Q)$(MAKE) $(build)=arch/arm64/tools kapi
+ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
+ ifneq ($(CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419),y)
+ @echo "warning: ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum" >&2
+ endif
+endif
+ifeq ($(CONFIG_ARM64_USE_LSE_ATOMICS),y)
+ ifneq ($(CONFIG_ARM64_LSE_ATOMICS),y)
+ @echo "warning: LSE atomics not supported by binutils" >&2
+ endif
+endif
+
# We use MRPROPER_FILES and CLEAN_FILES now
archclean:
--
2.27.0
[-- Attachment #3: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 3+ messages in thread