From: Nathan Chancellor <nathan@kernel.org>
To: Brian Cain <bcain@quicinc.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-hexagon@vger.kernel.org, patches@lists.linux.dev,
llvm@lists.linux.dev, stable@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] hexagon: Disable constant extender optimization for LLVM prior to 19.1.0
Date: Tue, 17 Dec 2024 10:44:25 -0700 [thread overview]
Message-ID: <20241217174425.GA2651946@ax162> (raw)
In-Reply-To: <20241121-hexagon-disable-constant-expander-pass-v2-1-1a92e9afb0f4@kernel.org>
Hi Linus,
Could you apply this change [1] directly? Brian has reviewed it and I have
sent this patch twice plus another ping for application [2]. I would
like to stop applying this in our CI and some other people have hit it
as well.
[1]: https://lore.kernel.org/all/20241121-hexagon-disable-constant-expander-pass-v2-1-1a92e9afb0f4@kernel.org/
[2]: https://lore.kernel.org/all/20241001185848.GA562711@thelio-3990X/
Cheers,
Nathan
On Thu, Nov 21, 2024 at 11:22:18AM -0700, Nathan Chancellor wrote:
> The Hexagon-specific constant extender optimization in LLVM may crash on
> Linux kernel code [1], such as fs/bcache/btree_io.c after
> commit 32ed4a620c54 ("bcachefs: Btree path tracepoints") in 6.12:
>
> clang: llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp:745: bool (anonymous namespace)::HexagonConstExtenders::ExtRoot::operator<(const HCE::ExtRoot &) const: Assertion `ThisB->getParent() == OtherB->getParent()' failed.
> Stack dump:
> 0. Program arguments: clang --target=hexagon-linux-musl ... fs/bcachefs/btree_io.c
> 1. <eof> parser at end of file
> 2. Code generation
> 3. Running pass 'Function Pass Manager' on module 'fs/bcachefs/btree_io.c'.
> 4. Running pass 'Hexagon constant-extender optimization' on function '@__btree_node_lock_nopath'
>
> Without assertions enabled, there is just a hang during compilation.
>
> This has been resolved in LLVM main (20.0.0) [2] and backported to LLVM
> 19.1.0 but the kernel supports LLVM 13.0.1 and newer, so disable the
> constant expander optimization using the '-mllvm' option when using a
> toolchain that is not fixed.
>
> Cc: stable@vger.kernel.org
> Link: https://github.com/llvm/llvm-project/issues/99714 [1]
> Link: https://github.com/llvm/llvm-project/commit/68df06a0b2998765cb0a41353fcf0919bbf57ddb [2]
> Link: https://github.com/llvm/llvm-project/commit/2ab8d93061581edad3501561722ebd5632d73892 [3]
> Reviewed-by: Brian Cain <bcain@quicinc.com>
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> ---
> Andrew, can you please take this for 6.13? Our CI continues to hit this.
>
> Changes in v2:
> - Rebase on 6.12 to make sure it is still applicable
> - Name exact bcachefs commit that introduces crash now that it is
> merged
> - Add 'Cc: stable' as this is now visible in a stable release
> - Carry forward Brian's reviewed-by
> - Link to v1: https://lore.kernel.org/r/20240819-hexagon-disable-constant-expander-pass-v1-1-36a734e9527d@kernel.org
> ---
> arch/hexagon/Makefile | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/hexagon/Makefile b/arch/hexagon/Makefile
> index 92d005958dfb232d48a4ca843b46262a84a08eb4..ff172cbe5881a074f9d9430c37071992a4c8beac 100644
> --- a/arch/hexagon/Makefile
> +++ b/arch/hexagon/Makefile
> @@ -32,3 +32,9 @@ KBUILD_LDFLAGS += $(ldflags-y)
> TIR_NAME := r19
> KBUILD_CFLAGS += -ffixed-$(TIR_NAME) -DTHREADINFO_REG=$(TIR_NAME) -D__linux__
> KBUILD_AFLAGS += -DTHREADINFO_REG=$(TIR_NAME)
> +
> +# Disable HexagonConstExtenders pass for LLVM versions prior to 19.1.0
> +# https://github.com/llvm/llvm-project/issues/99714
> +ifneq ($(call clang-min-version, 190100),y)
> +KBUILD_CFLAGS += -mllvm -hexagon-cext=false
> +endif
>
> ---
> base-commit: adc218676eef25575469234709c2d87185ca223a
> change-id: 20240802-hexagon-disable-constant-expander-pass-8b6b61db6afc
>
> Best regards,
> --
> Nathan Chancellor <nathan@kernel.org>
>
next prev parent reply other threads:[~2024-12-17 17:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-21 18:22 [PATCH v2] hexagon: Disable constant extender optimization for LLVM prior to 19.1.0 Nathan Chancellor
2024-12-17 17:44 ` Nathan Chancellor [this message]
2024-12-18 2:11 ` Brian Cain
2024-12-18 4:19 ` Brian Cain
2024-12-18 18:23 ` Nathan Chancellor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241217174425.GA2651946@ax162 \
--to=nathan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=bcain@quicinc.com \
--cc=linux-hexagon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=patches@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.