Skip to content

Commit f942c8b

Browse files
committed
patches: stable: Apply Hexagon fix
The bcachefs commit that introduced the infinite loop that this patch works around was merged in 6.12, so this fix is needed in stable after the bump in #789. Signed-off-by: Nathan Chancellor <[email protected]>
1 parent 576f1ae commit f942c8b

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed

patches/stable/series

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
20241018_arnd_media_mediatek_vcodec_mark_vdec_vp9_slice_map_counts_eob_coef_noinline.patch
2+
v2_20241121_nathan_hexagon_disable_constant_extender_optimization_for_llvm_prior_to_19_1_0.patch
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
From git@z Thu Jan 1 00:00:00 1970
2+
Subject: [PATCH v2] hexagon: Disable constant extender optimization for
3+
LLVM prior to 19.1.0
4+
From: Nathan Chancellor <[email protected]>
5+
Date: Thu, 21 Nov 2024 11:22:18 -0700
6+
Message-Id: <20241121-hexagon-disable-constant-expander-pass-v2-1-1a92e9afb0f4@kernel.org>
7+
MIME-Version: 1.0
8+
Content-Type: text/plain; charset="utf-8"
9+
Content-Transfer-Encoding: 7bit
10+
11+
The Hexagon-specific constant extender optimization in LLVM may crash on
12+
Linux kernel code [1], such as fs/bcache/btree_io.c after
13+
commit 32ed4a620c54 ("bcachefs: Btree path tracepoints") in 6.12:
14+
15+
clang: llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp:745: bool (anonymous namespace)::HexagonConstExtenders::ExtRoot::operator<(const HCE::ExtRoot &) const: Assertion `ThisB->getParent() == OtherB->getParent()' failed.
16+
Stack dump:
17+
0. Program arguments: clang --target=hexagon-linux-musl ... fs/bcachefs/btree_io.c
18+
1. <eof> parser at end of file
19+
2. Code generation
20+
3. Running pass 'Function Pass Manager' on module 'fs/bcachefs/btree_io.c'.
21+
4. Running pass 'Hexagon constant-extender optimization' on function '@__btree_node_lock_nopath'
22+
23+
Without assertions enabled, there is just a hang during compilation.
24+
25+
This has been resolved in LLVM main (20.0.0) [2] and backported to LLVM
26+
19.1.0 but the kernel supports LLVM 13.0.1 and newer, so disable the
27+
constant expander optimization using the '-mllvm' option when using a
28+
toolchain that is not fixed.
29+
30+
31+
Link: https://github.com/llvm/llvm-project/issues/99714 [1]
32+
Link: https://github.com/llvm/llvm-project/commit/68df06a0b2998765cb0a41353fcf0919bbf57ddb [2]
33+
Link: https://github.com/llvm/llvm-project/commit/2ab8d93061581edad3501561722ebd5632d73892 [3]
34+
Reviewed-by: Brian Cain <[email protected]>
35+
Link: https://lore.kernel.org/r/20241121-hexagon-disable-constant-expander-pass-v2-1-1a92e9afb0f4@kernel.org
36+
Signed-off-by: Nathan Chancellor <[email protected]>
37+
---
38+
Andrew, can you please take this for 6.13? Our CI continues to hit this.
39+
40+
Changes in v2:
41+
- Rebase on 6.12 to make sure it is still applicable
42+
- Name exact bcachefs commit that introduces crash now that it is
43+
merged
44+
- Add 'Cc: stable' as this is now visible in a stable release
45+
- Carry forward Brian's reviewed-by
46+
- Link to v1: https://lore.kernel.org/r/20240819-hexagon-disable-constant-expander-pass-v1-1-36a734e9527d@kernel.org
47+
---
48+
arch/hexagon/Makefile | 6 ++++++
49+
1 file changed, 6 insertions(+)
50+
51+
diff --git a/arch/hexagon/Makefile b/arch/hexagon/Makefile
52+
index 92d005958dfb232d48a4ca843b46262a84a08eb4..ff172cbe5881a074f9d9430c37071992a4c8beac 100644
53+
--- a/arch/hexagon/Makefile
54+
+++ b/arch/hexagon/Makefile
55+
@@ -32,3 +32,9 @@ KBUILD_LDFLAGS += $(ldflags-y)
56+
TIR_NAME := r19
57+
KBUILD_CFLAGS += -ffixed-$(TIR_NAME) -DTHREADINFO_REG=$(TIR_NAME) -D__linux__
58+
KBUILD_AFLAGS += -DTHREADINFO_REG=$(TIR_NAME)
59+
+
60+
+# Disable HexagonConstExtenders pass for LLVM versions prior to 19.1.0
61+
+# https://github.com/llvm/llvm-project/issues/99714
62+
+ifneq ($(call clang-min-version, 190100),y)
63+
+KBUILD_CFLAGS += -mllvm -hexagon-cext=false
64+
+endif
65+
66+
---
67+
base-commit: adc218676eef25575469234709c2d87185ca223a
68+
change-id: 20240802-hexagon-disable-constant-expander-pass-8b6b61db6afc
69+
70+
Best regards,
71+
--
72+
Nathan Chancellor <[email protected]>
73+

0 commit comments

Comments
 (0)