* [PATCH V2 0/3] Rust support for powerpc
@ 2026-02-04 21:01 Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
` (2 more replies)
0 siblings, 3 replies; 17+ messages in thread
From: Mukesh Kumar Chaurasiya (IBM) @ 2026-02-04 21:01 UTC (permalink / raw)
To: linkmauve, ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg,
aliceryhl, tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy,
peterz, jpoimboe, jbaron, rostedt, ardb, rust-for-linux,
linux-doc, linux-kernel, linuxppc-dev
Cc: Mukesh Kumar Chaurasiya (IBM)
Enable experimental rust support for ppc64le and ppc32be. The patch for
ppc32 has been provided by Link Mauve[1] and ppc64le support[2] has been
merged over it. ppc32 needs some toolchain fixes mentioned in the patch
`rust: Add PowerPC support` and the discussion for that is done here[1].
This has been tested on powernv9 hardware and power10 pseries qemu. I
I request Link to test the ppc32 part as i don't have a hardware to test
it out.
[1] https://lore.kernel.org/all/20260204030507.8203-1-linkmauve@linkmauve.fr
[2] https://lore.kernel.org/all/20260204042417.83903-1-mkchauras@gmail.com
Changelog:
V1 -> V2:
- jump label fix for rust has been moved to a separate patch
- PPC32 support has been taken
- rust support has been marked experimental
- target.json dependency has been removed
- HAVE_RUST now depends on CPU_LITTLE_ENDIAN for PPC64
Link Mauve (1):
rust: Add PowerPC support
Mukesh Kumar Chaurasiya (IBM) (2):
powerpc/jump_label: adjust inline asm to be consistent
powerpc: Enable Rust for ppc64le
Documentation/rust/arch-support.rst | 1 +
arch/powerpc/Kconfig | 1 +
arch/powerpc/Makefile | 9 +++++++++
arch/powerpc/include/asm/jump_label.h | 23 +++++++++++++----------
rust/Makefile | 11 ++++++++++-
5 files changed, 34 insertions(+), 11 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent
2026-02-04 21:01 [PATCH V2 0/3] Rust support for powerpc Mukesh Kumar Chaurasiya (IBM)
@ 2026-02-04 21:01 ` Mukesh Kumar Chaurasiya (IBM)
2026-02-05 8:09 ` Christophe Leroy (CS GROUP)
2026-02-05 8:24 ` Alice Ryhl
2026-02-04 21:01 ` [PATCH V2 2/3] rust: Add PowerPC support Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)
2 siblings, 2 replies; 17+ messages in thread
From: Mukesh Kumar Chaurasiya (IBM) @ 2026-02-04 21:01 UTC (permalink / raw)
To: linkmauve, ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg,
aliceryhl, tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy,
peterz, jpoimboe, jbaron, rostedt, ardb, rust-for-linux,
linux-doc, linux-kernel, linuxppc-dev
Cc: Mukesh Kumar Chaurasiya (IBM)
Added support for a new macro ARCH_STATIC_BRANCH_ASM in powerpc
to avoid duplication of inline asm between C and Rust. This is
inline with commit aecaf181651c '("jump_label: adjust inline asm to be consistent")'
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
---
arch/powerpc/include/asm/jump_label.h | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/arch/powerpc/include/asm/jump_label.h b/arch/powerpc/include/asm/jump_label.h
index d4eaba459a0e..a6b211502bfe 100644
--- a/arch/powerpc/include/asm/jump_label.h
+++ b/arch/powerpc/include/asm/jump_label.h
@@ -15,14 +15,20 @@
#define JUMP_ENTRY_TYPE stringify_in_c(FTR_ENTRY_LONG)
#define JUMP_LABEL_NOP_SIZE 4
+#define JUMP_TABLE_ENTRY(key, label) \
+ ".pushsection __jump_table, \"aw\" \n\t" \
+ ".long 1b - ., " label " - . \n\t" \
+ JUMP_ENTRY_TYPE key " - . \n\t" \
+ ".popsection \n\t"
+
+#define ARCH_STATIC_BRANCH_ASM(key, label) \
+ "1: nop \n\t" \
+ JUMP_TABLE_ENTRY(key,label)
+
static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
{
- asm goto("1:\n\t"
- "nop # arch_static_branch\n\t"
- ".pushsection __jump_table, \"aw\"\n\t"
- ".long 1b - ., %l[l_yes] - .\n\t"
- JUMP_ENTRY_TYPE "%c0 - .\n\t"
- ".popsection \n\t"
+ asm goto(
+ ARCH_STATIC_BRANCH_ASM("%c0", "%l[l_yes]")
: : "i" (&((char *)key)[branch]) : : l_yes);
return false;
@@ -34,10 +40,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool
{
asm goto("1:\n\t"
"b %l[l_yes] # arch_static_branch_jump\n\t"
- ".pushsection __jump_table, \"aw\"\n\t"
- ".long 1b - ., %l[l_yes] - .\n\t"
- JUMP_ENTRY_TYPE "%c0 - .\n\t"
- ".popsection \n\t"
+ JUMP_TABLE_ENTRY("%c0", "%l[l_yes]")
: : "i" (&((char *)key)[branch]) : : l_yes);
return false;
--
2.52.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH V2 2/3] rust: Add PowerPC support
2026-02-04 21:01 [PATCH V2 0/3] Rust support for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
@ 2026-02-04 21:01 ` Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)
2 siblings, 0 replies; 17+ messages in thread
From: Mukesh Kumar Chaurasiya (IBM) @ 2026-02-04 21:01 UTC (permalink / raw)
To: linkmauve, ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg,
aliceryhl, tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy,
peterz, jpoimboe, jbaron, rostedt, ardb, rust-for-linux,
linux-doc, linux-kernel, linuxppc-dev
Cc: Mukesh Kumar Chaurasiya (IBM)
From: Link Mauve <linkmauve@linkmauve.fr>
For now only Big Endian 32-bit PowerPC is supported, as that is the only
hardware I have. This has been tested on the Nintendo Wii so far, but I
plan on also using it on the GameCube, Wii U and Apple G4.
These changes aren’t the only ones required to get the kernel to compile
and link on PowerPC, libcore will also have to be changed to not use
integer division to format u64, u128 and core::time::Duration, otherwise
__udivdi3() and __umoddi3() will have to be added. I have tested this
change by replacing the three implementations with unimplemented!() and
it linked just fine.
Signed-off-by: Link Mauve <linkmauve@linkmauve.fr>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
---
Documentation/rust/arch-support.rst | 1 +
arch/powerpc/Kconfig | 1 +
arch/powerpc/Makefile | 2 ++
rust/Makefile | 4 +++-
4 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst
index 6e6a515d0899..e26a94808e97 100644
--- a/Documentation/rust/arch-support.rst
+++ b/Documentation/rust/arch-support.rst
@@ -18,6 +18,7 @@ Architecture Level of support Constraints
``arm`` Maintained ARMv7 Little Endian only.
``arm64`` Maintained Little Endian only.
``loongarch`` Maintained \-
+``powerpc`` Experimental 32-bit Big Endian only.
``riscv`` Maintained ``riscv64`` and LLVM/Clang only.
``um`` Maintained \-
``x86`` Maintained ``x86_64`` only.
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 9537a61ebae0..17db23b82e91 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -283,6 +283,7 @@ config PPC
select HAVE_REGS_AND_STACK_ACCESS_API
select HAVE_RELIABLE_STACKTRACE
select HAVE_RSEQ
+ select HAVE_RUST if PPC32
select HAVE_SAMPLE_FTRACE_DIRECT if HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
select HAVE_SAMPLE_FTRACE_DIRECT_MULTI if HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
select HAVE_SETUP_PER_CPU_AREA if PPC64
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index a58b1029592c..9fd82c75dcbd 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -61,6 +61,8 @@ else
KBUILD_LDFLAGS_MODULE += $(objtree)/arch/powerpc/lib/crtsavres.o
endif
+KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
+
ifdef CONFIG_CPU_LITTLE_ENDIAN
KBUILD_CPPFLAGS += -mlittle-endian
KBUILD_LDFLAGS += -EL
diff --git a/rust/Makefile b/rust/Makefile
index 4dcc2eff51cb..ae22f2c5f0b3 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -384,13 +384,15 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
-fstrict-flex-arrays=% -fmin-function-alignment=% \
-fzero-init-padding-bits=% -mno-fdpic \
-fdiagnostics-show-context -fdiagnostics-show-context=% \
- --param=% --param asan-% -fno-isolate-erroneous-paths-dereference
+ --param=% --param asan-% -fno-isolate-erroneous-paths-dereference \
+ -ffixed-r2 -mmultiple -mno-readonly-in-sdata
# Derived from `scripts/Makefile.clang`.
BINDGEN_TARGET_x86 := x86_64-linux-gnu
BINDGEN_TARGET_arm64 := aarch64-linux-gnu
BINDGEN_TARGET_arm := arm-linux-gnueabi
BINDGEN_TARGET_loongarch := loongarch64-linux-gnusf
+BINDGEN_TARGET_powerpc := powerpc-linux-gnu
BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
--
2.52.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-04 21:01 [PATCH V2 0/3] Rust support for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 2/3] rust: Add PowerPC support Mukesh Kumar Chaurasiya (IBM)
@ 2026-02-04 21:01 ` Mukesh Kumar Chaurasiya (IBM)
2026-02-05 8:14 ` Christophe Leroy (CS GROUP)
2026-02-05 13:52 ` Link Mauve
2 siblings, 2 replies; 17+ messages in thread
From: Mukesh Kumar Chaurasiya (IBM) @ 2026-02-04 21:01 UTC (permalink / raw)
To: linkmauve, ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg,
aliceryhl, tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy,
peterz, jpoimboe, jbaron, rostedt, ardb, rust-for-linux,
linux-doc, linux-kernel, linuxppc-dev
Cc: Mukesh Kumar Chaurasiya (IBM)
Enabling rust support for ppc64le only.
Tested on powernv9:
$ uname -rm
6.19.0-rc8+ ppc64le
$ sudo modprobe rust_minimal
[ 632.890850] rust_minimal: Rust minimal sample (init)
[ 632.890881] rust_minimal: Am I built-in? false
[ 632.890898] rust_minimal: test_parameter: 1
$ sudo rmmod rust_minimal
[ 648.272832] rust_minimal: My numbers are [72, 108, 200]
[ 648.272873] rust_minimal: Rust minimal sample (exit)
$ sudo modprobe rust_print
[ 843.410391] rust_print: Rust printing macros sample (init)
[ 843.410424] rust_print: Emergency message (level 0) without args
[ 843.410451] rust_print: Alert message (level 1) without args
[ 843.410477] rust_print: Critical message (level 2) without args
[ 843.410503] rust_print: Error message (level 3) without args
[ 843.410530] rust_print: Warning message (level 4) without args
[ 843.410557] rust_print: Notice message (level 5) without args
[ 843.410594] rust_print: Info message (level 6) without args
[ 843.410617] rust_print: A line that is continued without args
[ 843.410646] rust_print: Emergency message (level 0) with args
[ 843.410675] rust_print: Alert message (level 1) with args
[ 843.410691] rust_print: Critical message (level 2) with args
[ 843.410727] rust_print: Error message (level 3) with args
[ 843.410761] rust_print: Warning message (level 4) with args
[ 843.410796] rust_print: Notice message (level 5) with args
[ 843.410821] rust_print: Info message (level 6) with args
[ 843.410854] rust_print: A line that is continued with args
[ 843.410892] rust_print: 1
[ 843.410895] rust_print: "hello, world"
[ 843.410924] rust_print: [samples/rust/rust_print_main.rs:35:5] c = "hello, world"
[ 843.410977] rust_print: Arc<dyn Display> says 42
[ 843.410979] rust_print: Arc<dyn Display> says hello, world
$ sudo rmmod rust_print
[ 843.411003] rust_print: "hello, world"
[ 888.499935] rust_print: Rust printing macros sample (exit)
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
---
Documentation/rust/arch-support.rst | 2 +-
arch/powerpc/Kconfig | 2 +-
arch/powerpc/Makefile | 9 ++++++++-
rust/Makefile | 9 ++++++++-
4 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst
index e26a94808e97..627471ac9238 100644
--- a/Documentation/rust/arch-support.rst
+++ b/Documentation/rust/arch-support.rst
@@ -18,7 +18,7 @@ Architecture Level of support Constraints
``arm`` Maintained ARMv7 Little Endian only.
``arm64`` Maintained Little Endian only.
``loongarch`` Maintained \-
-``powerpc`` Experimental 32-bit Big Endian only.
+``powerpc`` Experimental 64-bit Little Endian. 32-bit Big Endian.
``riscv`` Maintained ``riscv64`` and LLVM/Clang only.
``um`` Maintained \-
``x86`` Maintained ``x86_64`` only.
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 17db23b82e91..c5dd03713af2 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -283,7 +283,7 @@ config PPC
select HAVE_REGS_AND_STACK_ACCESS_API
select HAVE_RELIABLE_STACKTRACE
select HAVE_RSEQ
- select HAVE_RUST if PPC32
+ select HAVE_RUST if PPC32 || (PPC64 && CPU_LITTLE_ENDIAN)
select HAVE_SAMPLE_FTRACE_DIRECT if HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
select HAVE_SAMPLE_FTRACE_DIRECT_MULTI if HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
select HAVE_SETUP_PER_CPU_AREA if PPC64
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 9fd82c75dcbd..f93816ddc036 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -61,7 +61,14 @@ else
KBUILD_LDFLAGS_MODULE += $(objtree)/arch/powerpc/lib/crtsavres.o
endif
-KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
+ifdef CONFIG_PPC64
+ifdef CONFIG_CPU_LITTLE_ENDIAN
+KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu
+endif
+KBUILD_RUSTFLAGS += -Ctarget-feature=-mma,-vsx,-hard-float,-altivec
+else
+KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
+endif
ifdef CONFIG_CPU_LITTLE_ENDIAN
KBUILD_CPPFLAGS += -mlittle-endian
diff --git a/rust/Makefile b/rust/Makefile
index ae22f2c5f0b3..c3961fd0d9a4 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -392,10 +392,17 @@ BINDGEN_TARGET_x86 := x86_64-linux-gnu
BINDGEN_TARGET_arm64 := aarch64-linux-gnu
BINDGEN_TARGET_arm := arm-linux-gnueabi
BINDGEN_TARGET_loongarch := loongarch64-linux-gnusf
-BINDGEN_TARGET_powerpc := powerpc-linux-gnu
BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
+ifdef CONFIG_PPC64
+ifdef CONFIG_CPU_LITTLE_ENDIAN
+BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
+endif
+else
+BINDGEN_TARGET_powerpc := powerpc-linux-gnu
+endif
+
# All warnings are inhibited since GCC builds are very experimental,
# many GCC warnings are not supported by Clang, they may only appear in
# some configurations, with new GCC versions, etc.
--
2.52.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent
2026-02-04 21:01 ` [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
@ 2026-02-05 8:09 ` Christophe Leroy (CS GROUP)
2026-02-05 8:24 ` Alice Ryhl
1 sibling, 0 replies; 17+ messages in thread
From: Christophe Leroy (CS GROUP) @ 2026-02-05 8:09 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM), linkmauve, ojeda, boqun.feng, gary,
bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross, dakr, corbet,
maddy, mpe, npiggin, peterz, jpoimboe, jbaron, rostedt, ardb,
rust-for-linux, linux-doc, linux-kernel, linuxppc-dev
Le 04/02/2026 à 22:01, Mukesh Kumar Chaurasiya (IBM) a écrit :
> [Vous ne recevez pas souvent de courriers de mkchauras@gmail.com. Découvrez pourquoi ceci est important à https://aka.ms/LearnAboutSenderIdentification ]
>
> Added support for a new macro ARCH_STATIC_BRANCH_ASM in powerpc
> to avoid duplication of inline asm between C and Rust. This is
> inline with commit aecaf181651c '("jump_label: adjust inline asm to be consistent")'
>
> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> ---
> arch/powerpc/include/asm/jump_label.h | 23 +++++++++++++----------
> 1 file changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/jump_label.h b/arch/powerpc/include/asm/jump_label.h
> index d4eaba459a0e..a6b211502bfe 100644
> --- a/arch/powerpc/include/asm/jump_label.h
> +++ b/arch/powerpc/include/asm/jump_label.h
> @@ -15,14 +15,20 @@
> #define JUMP_ENTRY_TYPE stringify_in_c(FTR_ENTRY_LONG)
> #define JUMP_LABEL_NOP_SIZE 4
>
> +#define JUMP_TABLE_ENTRY(key, label) \
> + ".pushsection __jump_table, \"aw\" \n\t" \
> + ".long 1b - ., " label " - . \n\t" \
> + JUMP_ENTRY_TYPE key " - . \n\t" \
> + ".popsection \n\t"
> +
> +#define ARCH_STATIC_BRANCH_ASM(key, label) \
> + "1: nop \n\t" \
> + JUMP_TABLE_ENTRY(key,label)
> +
> static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
> {
> - asm goto("1:\n\t"
> - "nop # arch_static_branch\n\t"
> - ".pushsection __jump_table, \"aw\"\n\t"
> - ".long 1b - ., %l[l_yes] - .\n\t"
> - JUMP_ENTRY_TYPE "%c0 - .\n\t"
> - ".popsection \n\t"
> + asm goto(
> + ARCH_STATIC_BRANCH_ASM("%c0", "%l[l_yes]")
> : : "i" (&((char *)key)[branch]) : : l_yes);
>
> return false;
> @@ -34,10 +40,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool
> {
> asm goto("1:\n\t"
> "b %l[l_yes] # arch_static_branch_jump\n\t"
> - ".pushsection __jump_table, \"aw\"\n\t"
> - ".long 1b - ., %l[l_yes] - .\n\t"
> - JUMP_ENTRY_TYPE "%c0 - .\n\t"
> - ".popsection \n\t"
> + JUMP_TABLE_ENTRY("%c0", "%l[l_yes]")
> : : "i" (&((char *)key)[branch]) : : l_yes);
>
> return false;
> --
> 2.52.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-04 21:01 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)
@ 2026-02-05 8:14 ` Christophe Leroy (CS GROUP)
2026-02-05 13:52 ` Link Mauve
1 sibling, 0 replies; 17+ messages in thread
From: Christophe Leroy (CS GROUP) @ 2026-02-05 8:14 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM), linkmauve, ojeda, boqun.feng, gary,
bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross, dakr, corbet,
maddy, mpe, npiggin, peterz, jpoimboe, jbaron, rostedt, ardb,
rust-for-linux, linux-doc, linux-kernel, linuxppc-dev
Le 04/02/2026 à 22:01, Mukesh Kumar Chaurasiya (IBM) a écrit :
> [Vous ne recevez pas souvent de courriers de mkchauras@gmail.com. Découvrez pourquoi ceci est important à https://aka.ms/LearnAboutSenderIdentification ]
>
> Enabling rust support for ppc64le only.
>
> Tested on powernv9:
>
> $ uname -rm
> 6.19.0-rc8+ ppc64le
>
> $ sudo modprobe rust_minimal
> [ 632.890850] rust_minimal: Rust minimal sample (init)
> [ 632.890881] rust_minimal: Am I built-in? false
> [ 632.890898] rust_minimal: test_parameter: 1
>
> $ sudo rmmod rust_minimal
> [ 648.272832] rust_minimal: My numbers are [72, 108, 200]
> [ 648.272873] rust_minimal: Rust minimal sample (exit)
>
> $ sudo modprobe rust_print
> [ 843.410391] rust_print: Rust printing macros sample (init)
> [ 843.410424] rust_print: Emergency message (level 0) without args
> [ 843.410451] rust_print: Alert message (level 1) without args
> [ 843.410477] rust_print: Critical message (level 2) without args
> [ 843.410503] rust_print: Error message (level 3) without args
> [ 843.410530] rust_print: Warning message (level 4) without args
> [ 843.410557] rust_print: Notice message (level 5) without args
> [ 843.410594] rust_print: Info message (level 6) without args
> [ 843.410617] rust_print: A line that is continued without args
> [ 843.410646] rust_print: Emergency message (level 0) with args
> [ 843.410675] rust_print: Alert message (level 1) with args
> [ 843.410691] rust_print: Critical message (level 2) with args
> [ 843.410727] rust_print: Error message (level 3) with args
> [ 843.410761] rust_print: Warning message (level 4) with args
> [ 843.410796] rust_print: Notice message (level 5) with args
> [ 843.410821] rust_print: Info message (level 6) with args
> [ 843.410854] rust_print: A line that is continued with args
> [ 843.410892] rust_print: 1
> [ 843.410895] rust_print: "hello, world"
> [ 843.410924] rust_print: [samples/rust/rust_print_main.rs:35:5] c = "hello, world"
> [ 843.410977] rust_print: Arc<dyn Display> says 42
> [ 843.410979] rust_print: Arc<dyn Display> says hello, world
>
> $ sudo rmmod rust_print
> [ 843.411003] rust_print: "hello, world"
> [ 888.499935] rust_print: Rust printing macros sample (exit)
>
> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
Small comment below
> ---
> Documentation/rust/arch-support.rst | 2 +-
> arch/powerpc/Kconfig | 2 +-
> arch/powerpc/Makefile | 9 ++++++++-
> rust/Makefile | 9 ++++++++-
> 4 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst
> index e26a94808e97..627471ac9238 100644
> --- a/Documentation/rust/arch-support.rst
> +++ b/Documentation/rust/arch-support.rst
> @@ -18,7 +18,7 @@ Architecture Level of support Constraints
> ``arm`` Maintained ARMv7 Little Endian only.
> ``arm64`` Maintained Little Endian only.
> ``loongarch`` Maintained \-
> -``powerpc`` Experimental 32-bit Big Endian only.
> +``powerpc`` Experimental 64-bit Little Endian. 32-bit Big Endian.
> ``riscv`` Maintained ``riscv64`` and LLVM/Clang only.
> ``um`` Maintained \-
> ``x86`` Maintained ``x86_64`` only.
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 17db23b82e91..c5dd03713af2 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -283,7 +283,7 @@ config PPC
> select HAVE_REGS_AND_STACK_ACCESS_API
> select HAVE_RELIABLE_STACKTRACE
> select HAVE_RSEQ
> - select HAVE_RUST if PPC32
> + select HAVE_RUST if PPC32 || (PPC64 && CPU_LITTLE_ENDIAN)
Would be better to leave the first line as is and add a second line as
follows:
select HAVE_RUST if PPC64 && CPU_LITTLE_ENDIAN
> select HAVE_SAMPLE_FTRACE_DIRECT if HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
> select HAVE_SAMPLE_FTRACE_DIRECT_MULTI if HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
> select HAVE_SETUP_PER_CPU_AREA if PPC64
> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> index 9fd82c75dcbd..f93816ddc036 100644
> --- a/arch/powerpc/Makefile
> +++ b/arch/powerpc/Makefile
> @@ -61,7 +61,14 @@ else
> KBUILD_LDFLAGS_MODULE += $(objtree)/arch/powerpc/lib/crtsavres.o
> endif
>
> -KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
> +ifdef CONFIG_PPC64
> +ifdef CONFIG_CPU_LITTLE_ENDIAN
> +KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu
> +endif
> +KBUILD_RUSTFLAGS += -Ctarget-feature=-mma,-vsx,-hard-float,-altivec
> +else
> +KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
> +endif
>
> ifdef CONFIG_CPU_LITTLE_ENDIAN
> KBUILD_CPPFLAGS += -mlittle-endian
> diff --git a/rust/Makefile b/rust/Makefile
> index ae22f2c5f0b3..c3961fd0d9a4 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -392,10 +392,17 @@ BINDGEN_TARGET_x86 := x86_64-linux-gnu
> BINDGEN_TARGET_arm64 := aarch64-linux-gnu
> BINDGEN_TARGET_arm := arm-linux-gnueabi
> BINDGEN_TARGET_loongarch := loongarch64-linux-gnusf
> -BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
> BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
>
> +ifdef CONFIG_PPC64
> +ifdef CONFIG_CPU_LITTLE_ENDIAN
> +BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
> +endif
> +else
> +BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> +endif
> +
> # All warnings are inhibited since GCC builds are very experimental,
> # many GCC warnings are not supported by Clang, they may only appear in
> # some configurations, with new GCC versions, etc.
> --
> 2.52.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent
2026-02-04 21:01 ` [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
2026-02-05 8:09 ` Christophe Leroy (CS GROUP)
@ 2026-02-05 8:24 ` Alice Ryhl
1 sibling, 0 replies; 17+ messages in thread
From: Alice Ryhl @ 2026-02-05 8:24 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM)
Cc: linkmauve, ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg,
tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy, peterz,
jpoimboe, jbaron, rostedt, ardb, rust-for-linux, linux-doc,
linux-kernel, linuxppc-dev
On Thu, Feb 05, 2026 at 02:31:23AM +0530, Mukesh Kumar Chaurasiya (IBM) wrote:
> Added support for a new macro ARCH_STATIC_BRANCH_ASM in powerpc
> to avoid duplication of inline asm between C and Rust. This is
> inline with commit aecaf181651c '("jump_label: adjust inline asm to be consistent")'
>
> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-04 21:01 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)
2026-02-05 8:14 ` Christophe Leroy (CS GROUP)
@ 2026-02-05 13:52 ` Link Mauve
2026-02-05 14:51 ` Venkat Rao Bagalkote
2026-02-05 15:45 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya
1 sibling, 2 replies; 17+ messages in thread
From: Link Mauve @ 2026-02-05 13:52 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya (IBM)
Cc: linkmauve, ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg,
aliceryhl, tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy,
peterz, jpoimboe, jbaron, rostedt, ardb, rust-for-linux,
linux-doc, linux-kernel, linuxppc-dev
On Thu, Feb 05, 2026 at 02:31:25AM +0530, Mukesh Kumar Chaurasiya (IBM) wrote:
[…]
> diff --git a/rust/Makefile b/rust/Makefile
> index ae22f2c5f0b3..c3961fd0d9a4 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -392,10 +392,17 @@ BINDGEN_TARGET_x86 := x86_64-linux-gnu
> BINDGEN_TARGET_arm64 := aarch64-linux-gnu
> BINDGEN_TARGET_arm := arm-linux-gnueabi
> BINDGEN_TARGET_loongarch := loongarch64-linux-gnusf
> -BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
> BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
>
> +ifdef CONFIG_PPC64
> +ifdef CONFIG_CPU_LITTLE_ENDIAN
> +BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
> +endif
> +else
> +BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> +endif
You define BINDGEN_TARGET_powerpc after BINDGEN_TARGET has been set to
the value of $(BINDGEN_TARGET_$(SRCARCH)), so it is empty and bindgen
then gets passed --target= which makes it fail here, with this error
message:
```
bindgen ../rust/bindings/bindings_helper.h --blocklist-type __kernel_s?size_t --blocklist-type __kernel_ptrdiff_t --opaque-type xregs_state --opaque-type desc_struct --opaque-type arch_lbr_state --opaque-type local_apic --opaque-type alt_instr --opaque-type x86_msi_data --opaque-type x86_msi_addr_lo --opaque-type kunit_try_catch --opaque-type spinlock --no-doc-comments --blocklist-function __list_.*_report --blocklist-item ARCH_SLAB_MINALIGN --blocklist-item ARCH_KMALLOC_MINALIGN --with-derive-custom-struct .*=MaybeZeroable --with-derive-custom-union .*=MaybeZeroable --rust-target 1.68 --use-core --with-derive-default --ctypes-prefix ffi --no-layout-tests --no-debug '.*' --enable-function-attribute-detection -o rust/bindings/bindings_generated.rs -- -Wp,-MMD,rust/bindings/.bindings_generated.rs.d -nostdinc -I../arch/powerpc/include -I./arch/powerpc/include/generated -I../include -I./include -I../arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi -I../include/uapi -I./include/generated/uapi -include ../include/linux/compiler-version.h -include ../include/linux/kconfig.h -include ../include/linux/compiler_types.h -D__KERNEL__ -mbig-endian -m32 -I ../arch/powerpc -fmacro-prefix-map=../= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -msoft-float -mcpu=powerpc -mno-prefixed -mno-pcrel -mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables -mbig-endian -fno-delete-null-pointer-checks -Os -fno-stack-protector -fomit-frame-pointer -ftrivial-auto-var-init=zero -fno-strict-overflow -fno-stack-check -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1280 -Wno-main -Wno-dangling-pointer -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -DGCC_PLUGINS -I../rust -Irust -DKBUILD_MODFILE='"rust/bindings_generated"' -DKBUILD_BASENAME='"bindings_generated"' -DKBUILD_MODNAME='"bindings_generated"' -D__KBUILD_MODNAME=kmod_bindings_generated -w --target= -fno-builtin -D__BINDGEN__ -DMODULE ; sed -Ei 's/pub const RUST_CONST_HELPER_([a-zA-Z0-9_]*)/pub const /g' rust/bindings/bindings_generated.rs
error: unsupported option '-mbig-endian' for target ''
error: unsupported option '-mcpu=' for target ''
error: unsupported option '-mno-prefixed' for target ''
error: unsupported option '-mno-pcrel' for target ''
error: unsupported option '-mno-altivec' for target ''
error: unsupported option '-mno-vsx' for target ''
error: unsupported option '-mno-mma' for target ''
error: unsupported option '-mbig-endian' for target ''
error: unknown target triple 'unknown'
panicked at bindgen/ir/context.rs:562:15:
libclang error; possible causes include:
- Invalid flag syntax
- Unrecognized flags
- Invalid flag arguments
- File I/O errors
- Host vs. target architecture mismatch
If you encounter an error missing from this list, please file an issue or a PR!
```
Did this work on PPC64?
> +
> # All warnings are inhibited since GCC builds are very experimental,
> # many GCC warnings are not supported by Clang, they may only appear in
> # some configurations, with new GCC versions, etc.
> --
> 2.52.0
>
With this fixed:
Reviewed-by: Link Mauve <linkmauve@linkmauve.fr>
Tested-by: Link Mauve <linkmauve@linkmauve.fr>
--
Link Mauve
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-05 13:52 ` Link Mauve
@ 2026-02-05 14:51 ` Venkat Rao Bagalkote
2026-02-05 15:42 ` Mukesh Kumar Chaurasiya
2026-02-05 15:45 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya
1 sibling, 1 reply; 17+ messages in thread
From: Venkat Rao Bagalkote @ 2026-02-05 14:51 UTC (permalink / raw)
To: Link Mauve, Mukesh Kumar Chaurasiya (IBM)
Cc: ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl,
tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy, peterz,
jpoimboe, jbaron, rostedt, ardb, rust-for-linux, linux-doc,
linux-kernel, linuxppc-dev
On 05/02/26 7:22 pm, Link Mauve wrote:
> On Thu, Feb 05, 2026 at 02:31:25AM +0530, Mukesh Kumar Chaurasiya (IBM) wrote:
> […]
>> diff --git a/rust/Makefile b/rust/Makefile
>> index ae22f2c5f0b3..c3961fd0d9a4 100644
>> --- a/rust/Makefile
>> +++ b/rust/Makefile
>> @@ -392,10 +392,17 @@ BINDGEN_TARGET_x86 := x86_64-linux-gnu
>> BINDGEN_TARGET_arm64 := aarch64-linux-gnu
>> BINDGEN_TARGET_arm := arm-linux-gnueabi
>> BINDGEN_TARGET_loongarch := loongarch64-linux-gnusf
>> -BINDGEN_TARGET_powerpc := powerpc-linux-gnu
>> BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
>> BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
>>
>> +ifdef CONFIG_PPC64
>> +ifdef CONFIG_CPU_LITTLE_ENDIAN
>> +BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
>> +endif
>> +else
>> +BINDGEN_TARGET_powerpc := powerpc-linux-gnu
>> +endif
> You define BINDGEN_TARGET_powerpc after BINDGEN_TARGET has been set to
> the value of $(BINDGEN_TARGET_$(SRCARCH)), so it is empty and bindgen
> then gets passed --target= which makes it fail here, with this error
> message:
> ```
> bindgen ../rust/bindings/bindings_helper.h --blocklist-type __kernel_s?size_t --blocklist-type __kernel_ptrdiff_t --opaque-type xregs_state --opaque-type desc_struct --opaque-type arch_lbr_state --opaque-type local_apic --opaque-type alt_instr --opaque-type x86_msi_data --opaque-type x86_msi_addr_lo --opaque-type kunit_try_catch --opaque-type spinlock --no-doc-comments --blocklist-function __list_.*_report --blocklist-item ARCH_SLAB_MINALIGN --blocklist-item ARCH_KMALLOC_MINALIGN --with-derive-custom-struct .*=MaybeZeroable --with-derive-custom-union .*=MaybeZeroable --rust-target 1.68 --use-core --with-derive-default --ctypes-prefix ffi --no-layout-tests --no-debug '.*' --enable-function-attribute-detection -o rust/bindings/bindings_generated.rs -- -Wp,-MMD,rust/bindings/.bindings_generated.rs.d -nostdinc -I../arch/powerpc/include -I./arch/powerpc/include/generated -I../include -I./include -I../arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi -I../include/uapi -I./include/generated/uapi -include ../include/linux/compiler-version.h -include ../include/linux/kconfig.h -include ../include/linux/compiler_types.h -D__KERNEL__ -mbig-endian -m32 -I ../arch/powerpc -fmacro-prefix-map=../= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -msoft-float -mcpu=powerpc -mno-prefixed -mno-pcrel -mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables -mbig-endian -fno-delete-null-pointer-checks -Os -fno-stack-protector -fomit-frame-pointer -ftrivial-auto-var-init=zero -fno-strict-overflow -fno-stack-check -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1280 -Wno-main -Wno-dangling-pointer -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -DGCC_PLUGINS -I../rust -Irust -DKBUILD_MODFILE='"rust/bindings_generated"' -DKBUILD_BASENAME='"bindings_generated"' -DKBUILD_MODNAME='"bindings_generated"' -D__KBUILD_MODNAME=kmod_bindings_generated -w --target= -fno-builtin -D__BINDGEN__ -DMODULE ; sed -Ei 's/pub const RUST_CONST_HELPER_([a-zA-Z0-9_]*)/pub const /g' rust/bindings/bindings_generated.rs
> error: unsupported option '-mbig-endian' for target ''
> error: unsupported option '-mcpu=' for target ''
> error: unsupported option '-mno-prefixed' for target ''
> error: unsupported option '-mno-pcrel' for target ''
> error: unsupported option '-mno-altivec' for target ''
> error: unsupported option '-mno-vsx' for target ''
> error: unsupported option '-mno-mma' for target ''
> error: unsupported option '-mbig-endian' for target ''
> error: unknown target triple 'unknown'
> panicked at bindgen/ir/context.rs:562:15:
> libclang error; possible causes include:
> - Invalid flag syntax
> - Unrecognized flags
> - Invalid flag arguments
> - File I/O errors
> - Host vs. target architecture mismatch
> If you encounter an error missing from this list, please file an issue or a PR!
> ```
>
> Did this work on PPC64?
On ppc64le, I am not able to get a successful Rust‑enabled build yet.
I am consistently hitting bindgen/libclang failures during the prepare
phase.
Build Failures:
error: unsupported option '-mlong-double-128' for target 'unknown'
error: unsupported argument 'medium' to option '-mcmodel=' for target
'unknown'
error: unknown target triple 'unknown'
panicked at bindgen-0.72.1/ir/context.rs:562:15:
libclang error; possible causes include:
- Invalid flag syntax
- Unrecognized flags
- Invalid flag arguments
- File I/O errors
- Host vs. target architecture mismatch
make[2]: *** [rust/Makefile:468: rust/bindings/bindings_generated.rs]
Error 101
make[2]: *** Deleting file 'rust/bindings/bindings_generated.rs'
make[2]: *** [rust/Makefile:488:
rust/bindings/bindings_helpers_generated.rs] Error 101
make[2]: *** Deleting file 'rust/bindings/bindings_helpers_generated.rs'
make[2]: *** [rust/Makefile:474: rust/uapi/uapi_generated.rs] Error 101
make[2]: *** Deleting file 'rust/uapi/uapi_generated.rs'
make[2]: *** [rust/Makefile:643: rust/core.o] Error 1
make[1]: *** [/root/linux/Makefile:1320: prepare] Error 2
make: *** [Makefile:248: __sub-make] Error 2
Regards,
Venkat.
>> +
>> # All warnings are inhibited since GCC builds are very experimental,
>> # many GCC warnings are not supported by Clang, they may only appear in
>> # some configurations, with new GCC versions, etc.
>> --
>> 2.52.0
>>
> With this fixed:
> Reviewed-by: Link Mauve <linkmauve@linkmauve.fr>
> Tested-by: Link Mauve <linkmauve@linkmauve.fr>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-05 14:51 ` Venkat Rao Bagalkote
@ 2026-02-05 15:42 ` Mukesh Kumar Chaurasiya
2026-02-05 19:34 ` Miguel Ojeda
2026-02-16 11:23 ` Rust version requirement (was: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le) J. Neuschäfer
0 siblings, 2 replies; 17+ messages in thread
From: Mukesh Kumar Chaurasiya @ 2026-02-05 15:42 UTC (permalink / raw)
To: Venkat Rao Bagalkote
Cc: Link Mauve, ojeda, boqun.feng, gary, bjorn3_gh, lossin,
a.hindborg, aliceryhl, tmgross, dakr, corbet, maddy, mpe, npiggin,
chleroy, peterz, jpoimboe, jbaron, rostedt, ardb, rust-for-linux,
linux-doc, linux-kernel, linuxppc-dev
On Thu, Feb 05, 2026 at 08:21:31PM +0530, Venkat Rao Bagalkote wrote:
>
> On 05/02/26 7:22 pm, Link Mauve wrote:
> > On Thu, Feb 05, 2026 at 02:31:25AM +0530, Mukesh Kumar Chaurasiya (IBM) wrote:
> > […]
> > > diff --git a/rust/Makefile b/rust/Makefile
> > > index ae22f2c5f0b3..c3961fd0d9a4 100644
> > > --- a/rust/Makefile
> > > +++ b/rust/Makefile
> > > @@ -392,10 +392,17 @@ BINDGEN_TARGET_x86 := x86_64-linux-gnu
> > > BINDGEN_TARGET_arm64 := aarch64-linux-gnu
> > > BINDGEN_TARGET_arm := arm-linux-gnueabi
> > > BINDGEN_TARGET_loongarch := loongarch64-linux-gnusf
> > > -BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> > > BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
> > > BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
> > > +ifdef CONFIG_PPC64
> > > +ifdef CONFIG_CPU_LITTLE_ENDIAN
> > > +BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
> > > +endif
> > > +else
> > > +BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> > > +endif
> > You define BINDGEN_TARGET_powerpc after BINDGEN_TARGET has been set to
> > the value of $(BINDGEN_TARGET_$(SRCARCH)), so it is empty and bindgen
> > then gets passed --target= which makes it fail here, with this error
> > message:
> > ```
> > bindgen ../rust/bindings/bindings_helper.h --blocklist-type __kernel_s?size_t --blocklist-type __kernel_ptrdiff_t --opaque-type xregs_state --opaque-type desc_struct --opaque-type arch_lbr_state --opaque-type local_apic --opaque-type alt_instr --opaque-type x86_msi_data --opaque-type x86_msi_addr_lo --opaque-type kunit_try_catch --opaque-type spinlock --no-doc-comments --blocklist-function __list_.*_report --blocklist-item ARCH_SLAB_MINALIGN --blocklist-item ARCH_KMALLOC_MINALIGN --with-derive-custom-struct .*=MaybeZeroable --with-derive-custom-union .*=MaybeZeroable --rust-target 1.68 --use-core --with-derive-default --ctypes-prefix ffi --no-layout-tests --no-debug '.*' --enable-function-attribute-detection -o rust/bindings/bindings_generated.rs -- -Wp,-MMD,rust/bindings/.bindings_generated.rs.d -nostdinc -I../arch/powerpc/include -I./arch/powerpc/include/generated -I../include -I./include -I../arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi -I../include/uapi -I./include/generated/uapi -include ../include/linux/compiler-version.h -include ../include/linux/kconfig.h -include ../include/linux/compiler_types.h -D__KERNEL__ -mbig-endian -m32 -I ../arch/powerpc -fmacro-prefix-map=../= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -msoft-float -mcpu=powerpc -mno-prefixed -mno-pcrel -mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables -mbig-endian -fno-delete-null-pointer-checks -Os -fno-stack-protector -fomit-frame-pointer -ftrivial-auto-var-init=zero -fno-strict-overflow -fno-stack-check -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1280 -Wno-main -Wno-dangling-pointer -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -DGCC_PLUGINS -I../rust -Irust -DKBUILD_MODFILE='"rust/bindings_generated"' -DKBUILD_BASENAME='"bindings_generated"' -DKBUILD_MODNAME='"bindings_generated"' -D__KBUILD_MODNAME=kmod_bindings_generated -w --target= -fno-builtin -D__BINDGEN__ -DMODULE ; sed -Ei 's/pub const RUST_CONST_HELPER_([a-zA-Z0-9_]*)/pub const /g' rust/bindings/bindings_generated.rs
> > error: unsupported option '-mbig-endian' for target ''
> > error: unsupported option '-mcpu=' for target ''
> > error: unsupported option '-mno-prefixed' for target ''
> > error: unsupported option '-mno-pcrel' for target ''
> > error: unsupported option '-mno-altivec' for target ''
> > error: unsupported option '-mno-vsx' for target ''
> > error: unsupported option '-mno-mma' for target ''
> > error: unsupported option '-mbig-endian' for target ''
> > error: unknown target triple 'unknown'
> > panicked at bindgen/ir/context.rs:562:15:
> > libclang error; possible causes include:
> > - Invalid flag syntax
> > - Unrecognized flags
> > - Invalid flag arguments
> > - File I/O errors
> > - Host vs. target architecture mismatch
> > If you encounter an error missing from this list, please file an issue or a PR!
> > ```
> >
> > Did this work on PPC64?
>
> On ppc64le, I am not able to get a successful Rust‑enabled build yet.
> I am consistently hitting bindgen/libclang failures during the prepare
> phase.
>
>
> Build Failures:
>
> error: unsupported option '-mlong-double-128' for target 'unknown'
> error: unsupported argument 'medium' to option '-mcmodel=' for target
> 'unknown'
> error: unknown target triple 'unknown'
> panicked at bindgen-0.72.1/ir/context.rs:562:15:
> libclang error; possible causes include:
> - Invalid flag syntax
> - Unrecognized flags
> - Invalid flag arguments
> - File I/O errors
> - Host vs. target architecture mismatch
>
> make[2]: *** [rust/Makefile:468: rust/bindings/bindings_generated.rs] Error
> 101
> make[2]: *** Deleting file 'rust/bindings/bindings_generated.rs'
>
> make[2]: *** [rust/Makefile:488:
> rust/bindings/bindings_helpers_generated.rs] Error 101
> make[2]: *** Deleting file 'rust/bindings/bindings_helpers_generated.rs'
>
> make[2]: *** [rust/Makefile:474: rust/uapi/uapi_generated.rs] Error 101
> make[2]: *** Deleting file 'rust/uapi/uapi_generated.rs'
>
> make[2]: *** [rust/Makefile:643: rust/core.o] Error 1
> make[1]: *** [/root/linux/Makefile:1320: prepare] Error 2
> make: *** [Makefile:248: __sub-make] Error 2
>
>
> Regards,
>
> Venkat.
>
hey,
use rust version nightly-2026-01-28
the latest one has some issue. I just raised a bug for the rustc
here[1].
[1] https://github.com/rust-lang/rust/issues/152177
Regards,
Mukesh
> > > +
> > > # All warnings are inhibited since GCC builds are very experimental,
> > > # many GCC warnings are not supported by Clang, they may only appear in
> > > # some configurations, with new GCC versions, etc.
> > > --
> > > 2.52.0
> > >
> > With this fixed:
> > Reviewed-by: Link Mauve <linkmauve@linkmauve.fr>
> > Tested-by: Link Mauve <linkmauve@linkmauve.fr>
> >
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-05 13:52 ` Link Mauve
2026-02-05 14:51 ` Venkat Rao Bagalkote
@ 2026-02-05 15:45 ` Mukesh Kumar Chaurasiya
1 sibling, 0 replies; 17+ messages in thread
From: Mukesh Kumar Chaurasiya @ 2026-02-05 15:45 UTC (permalink / raw)
To: Link Mauve
Cc: ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl,
tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy, peterz,
jpoimboe, jbaron, rostedt, ardb, rust-for-linux, linux-doc,
linux-kernel, linuxppc-dev
On Thu, Feb 05, 2026 at 02:52:12PM +0100, Link Mauve wrote:
> On Thu, Feb 05, 2026 at 02:31:25AM +0530, Mukesh Kumar Chaurasiya (IBM) wrote:
> […]
> > diff --git a/rust/Makefile b/rust/Makefile
> > index ae22f2c5f0b3..c3961fd0d9a4 100644
> > --- a/rust/Makefile
> > +++ b/rust/Makefile
> > @@ -392,10 +392,17 @@ BINDGEN_TARGET_x86 := x86_64-linux-gnu
> > BINDGEN_TARGET_arm64 := aarch64-linux-gnu
> > BINDGEN_TARGET_arm := arm-linux-gnueabi
> > BINDGEN_TARGET_loongarch := loongarch64-linux-gnusf
> > -BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> > BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
> > BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
> >
> > +ifdef CONFIG_PPC64
> > +ifdef CONFIG_CPU_LITTLE_ENDIAN
> > +BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
> > +endif
> > +else
> > +BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> > +endif
>
> You define BINDGEN_TARGET_powerpc after BINDGEN_TARGET has been set to
> the value of $(BINDGEN_TARGET_$(SRCARCH)), so it is empty and bindgen
> then gets passed --target= which makes it fail here, with this error
> message:
I am able to compile it and boot it on ppc64le qemu pseries and
powernv9 hardware.
I agree this might cause an issue. Will fix this and send out a new
revision.
> ```
> bindgen ../rust/bindings/bindings_helper.h --blocklist-type __kernel_s?size_t --blocklist-type __kernel_ptrdiff_t --opaque-type xregs_state --opaque-type desc_struct --opaque-type arch_lbr_state --opaque-type local_apic --opaque-type alt_instr --opaque-type x86_msi_data --opaque-type x86_msi_addr_lo --opaque-type kunit_try_catch --opaque-type spinlock --no-doc-comments --blocklist-function __list_.*_report --blocklist-item ARCH_SLAB_MINALIGN --blocklist-item ARCH_KMALLOC_MINALIGN --with-derive-custom-struct .*=MaybeZeroable --with-derive-custom-union .*=MaybeZeroable --rust-target 1.68 --use-core --with-derive-default --ctypes-prefix ffi --no-layout-tests --no-debug '.*' --enable-function-attribute-detection -o rust/bindings/bindings_generated.rs -- -Wp,-MMD,rust/bindings/.bindings_generated.rs.d -nostdinc -I../arch/powerpc/include -I./arch/powerpc/include/generated -I../include -I./include -I../arch/powerpc/include/uapi -I./arch/powerpc/include/generated/uapi -I../include/uapi -I./include/generated/uapi -include ../include/linux/compiler-version.h -include ../include/linux/kconfig.h -include ../include/linux/compiler_types.h -D__KERNEL__ -mbig-endian -m32 -I ../arch/powerpc -fmacro-prefix-map=../= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -msoft-float -mcpu=powerpc -mno-prefixed -mno-pcrel -mno-altivec -mno-vsx -mno-mma -fno-asynchronous-unwind-tables -mbig-endian -fno-delete-null-pointer-checks -Os -fno-stack-protector -fomit-frame-pointer -ftrivial-auto-var-init=zero -fno-strict-overflow -fno-stack-check -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1280 -Wno-main -Wno-dangling-pointer -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -DGCC_PLUGINS -I../rust -Irust -DKBUILD_MODFILE='"rust/bindings_generated"' -DKBUILD_BASENAME='"bindings_generated"' -DKBUILD_MODNAME='"bindings_generated"' -D__KBUILD_MODNAME=kmod_bindings_generated -w --target= -fno-builtin -D__BINDGEN__ -DMODULE ; sed -Ei 's/pub const RUST_CONST_HELPER_([a-zA-Z0-9_]*)/pub const /g' rust/bindings/bindings_generated.rs
> error: unsupported option '-mbig-endian' for target ''
> error: unsupported option '-mcpu=' for target ''
> error: unsupported option '-mno-prefixed' for target ''
> error: unsupported option '-mno-pcrel' for target ''
> error: unsupported option '-mno-altivec' for target ''
> error: unsupported option '-mno-vsx' for target ''
> error: unsupported option '-mno-mma' for target ''
> error: unsupported option '-mbig-endian' for target ''
> error: unknown target triple 'unknown'
> panicked at bindgen/ir/context.rs:562:15:
> libclang error; possible causes include:
> - Invalid flag syntax
> - Unrecognized flags
> - Invalid flag arguments
> - File I/O errors
> - Host vs. target architecture mismatch
> If you encounter an error missing from this list, please file an issue or a PR!
> ```
>
> Did this work on PPC64?
>
ppc64be still has some missing things from the toolchain side. For
ppc64le it does works, atleast on powernv9 hardware and pseries POWER10
qemu.
> > +
> > # All warnings are inhibited since GCC builds are very experimental,
> > # many GCC warnings are not supported by Clang, they may only appear in
> > # some configurations, with new GCC versions, etc.
> > --
> > 2.52.0
> >
>
> With this fixed:
> Reviewed-by: Link Mauve <linkmauve@linkmauve.fr>
> Tested-by: Link Mauve <linkmauve@linkmauve.fr>
>
Thanks.
Regards,
Mukesh
> --
> Link Mauve
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-05 15:42 ` Mukesh Kumar Chaurasiya
@ 2026-02-05 19:34 ` Miguel Ojeda
2026-02-05 20:02 ` Nathan Chancellor
2026-02-16 11:23 ` Rust version requirement (was: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le) J. Neuschäfer
1 sibling, 1 reply; 17+ messages in thread
From: Miguel Ojeda @ 2026-02-05 19:34 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya, Jubilee Young, Nathan Chancellor,
Nick Desaulniers, Bill Wendling, Justin Stitt
Cc: Venkat Rao Bagalkote, Link Mauve, ojeda, boqun.feng, gary,
bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross, dakr, corbet,
maddy, mpe, npiggin, chleroy, peterz, jpoimboe, jbaron, rostedt,
ardb, rust-for-linux, linux-doc, linux-kernel, linuxppc-dev,
clang-built-linux
On Thu, Feb 5, 2026 at 6:29 PM Mukesh Kumar Chaurasiya
<mkchauras@gmail.com> wrote:
>
> use rust version nightly-2026-01-28
>
> the latest one has some issue. I just raised a bug for the rustc
> here[1].
>
> [1] https://github.com/rust-lang/rust/issues/152177
It appears to be a bug in LLVM 22 for ppc64, not present in 21.
If I understand correctly, then it may be fixed in 22.1.9 if it gets released.
Thanks Jubilee for the quick reply there!
Cc'ing Clang/LLVM build support, in case they didn't hear about it.
I linked it in our usual lists.
Cheers,
Miguel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-05 19:34 ` Miguel Ojeda
@ 2026-02-05 20:02 ` Nathan Chancellor
2026-02-05 20:15 ` Miguel Ojeda
2026-02-11 22:23 ` Miguel Ojeda
0 siblings, 2 replies; 17+ messages in thread
From: Nathan Chancellor @ 2026-02-05 20:02 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Mukesh Kumar Chaurasiya, Jubilee Young, Nick Desaulniers,
Bill Wendling, Justin Stitt, Venkat Rao Bagalkote, Link Mauve,
ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl,
tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy, peterz,
jpoimboe, jbaron, rostedt, ardb, rust-for-linux, linux-doc,
linux-kernel, linuxppc-dev, clang-built-linux
On Thu, Feb 05, 2026 at 08:34:27PM +0100, Miguel Ojeda wrote:
> On Thu, Feb 5, 2026 at 6:29 PM Mukesh Kumar Chaurasiya
> <mkchauras@gmail.com> wrote:
> >
> > use rust version nightly-2026-01-28
> >
> > the latest one has some issue. I just raised a bug for the rustc
> > here[1].
> >
> > [1] https://github.com/rust-lang/rust/issues/152177
>
> It appears to be a bug in LLVM 22 for ppc64, not present in 21.
>
> If I understand correctly, then it may be fixed in 22.1.9 if it gets released.
>
> Thanks Jubilee for the quick reply there!
>
> Cc'ing Clang/LLVM build support, in case they didn't hear about it.
Thanks for the CC, I had not seen that issue. LLVM 22 is currently in
the -rc phase and I see that the fix has been merged into the
release/22.x branch as of yesterday so it should be in LLVM 21.1.0-rc3
when it get released on February 10. LLVM 21.1.8 was the last release of
the 21.x series (hard to keep up with all the numbers...) and it sounds
like this is only a regression from the LLVM 22 development cycle.
Cheers,
Nathan
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-05 20:02 ` Nathan Chancellor
@ 2026-02-05 20:15 ` Miguel Ojeda
2026-02-11 22:23 ` Miguel Ojeda
1 sibling, 0 replies; 17+ messages in thread
From: Miguel Ojeda @ 2026-02-05 20:15 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Mukesh Kumar Chaurasiya, Jubilee Young, Nick Desaulniers,
Bill Wendling, Justin Stitt, Venkat Rao Bagalkote, Link Mauve,
ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl,
tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy, peterz,
jpoimboe, jbaron, rostedt, ardb, rust-for-linux, linux-doc,
linux-kernel, linuxppc-dev, clang-built-linux
On Thu, Feb 5, 2026 at 9:02 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Thanks for the CC, I had not seen that issue. LLVM 22 is currently in
> the -rc phase and I see that the fix has been merged into the
> release/22.x branch as of yesterday so it should be in LLVM 21.1.0-rc3
> when it get released on February 10. LLVM 21.1.8 was the last release of
> the 21.x series (hard to keep up with all the numbers...) and it sounds
> like this is only a regression from the LLVM 22 development cycle.
Yeah, sorry, mixed up 21.1.9 with the potential 22.1.9 in summer this year, bah!
Fixed my comment in the issue to avoid confusion.
Thanks!
Cheers,
Miguel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le
2026-02-05 20:02 ` Nathan Chancellor
2026-02-05 20:15 ` Miguel Ojeda
@ 2026-02-11 22:23 ` Miguel Ojeda
1 sibling, 0 replies; 17+ messages in thread
From: Miguel Ojeda @ 2026-02-11 22:23 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Mukesh Kumar Chaurasiya, Jubilee Young, Nick Desaulniers,
Bill Wendling, Justin Stitt, Venkat Rao Bagalkote, Link Mauve,
ojeda, boqun.feng, gary, bjorn3_gh, lossin, a.hindborg, aliceryhl,
tmgross, dakr, corbet, maddy, mpe, npiggin, chleroy, peterz,
jpoimboe, jbaron, rostedt, ardb, rust-for-linux, linux-doc,
linux-kernel, linuxppc-dev, clang-built-linux
On Thu, Feb 5, 2026 at 9:02 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Thanks for the CC, I had not seen that issue. LLVM 22 is currently in
> the -rc phase and I see that the fix has been merged into the
> release/22.x branch as of yesterday so it should be in LLVM 21.1.0-rc3
> when it get released on February 10. LLVM 21.1.8 was the last release of
> the 21.x series (hard to keep up with all the numbers...) and it sounds
> like this is only a regression from the LLVM 22 development cycle.
Fixed as well for Rust 1.95.0 (expected 2026-04-16) when using the
LLVM they provide.
https://github.com/rust-lang/rust/pull/152428
Cheers,
Miguel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Rust version requirement (was: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le)
2026-02-05 15:42 ` Mukesh Kumar Chaurasiya
2026-02-05 19:34 ` Miguel Ojeda
@ 2026-02-16 11:23 ` J. Neuschäfer
2026-02-16 11:29 ` Alice Ryhl
1 sibling, 1 reply; 17+ messages in thread
From: J. Neuschäfer @ 2026-02-16 11:23 UTC (permalink / raw)
To: Mukesh Kumar Chaurasiya
Cc: Venkat Rao Bagalkote, Link Mauve, ojeda, boqun.feng, gary,
bjorn3_gh, lossin, a.hindborg, aliceryhl, tmgross, dakr, corbet,
maddy, mpe, npiggin, chleroy, peterz, jpoimboe, jbaron, rostedt,
ardb, rust-for-linux, linux-doc, linux-kernel, linuxppc-dev
On Thu, Feb 05, 2026 at 09:12:01PM +0530, Mukesh Kumar Chaurasiya wrote:
[...]
> use rust version nightly-2026-01-28
>
> the latest one has some issue. I just raised a bug for the rustc
> here[1].
>
> [1] https://github.com/rust-lang/rust/issues/152177
Another reason to use a nightly version is that Rust inline assembly for
PowerPC will only be stabilized[1] in version 1.94, so current release
versions fail like this (tested with 1.91.1):
error[E0658]: inline assembly is not stable yet on this architecture
--> ../rust/kernel/sync/barrier.rs:19:14
|
19 | unsafe { core::arch::asm!("") };
| ^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #93335 <https://github.com/rust-lang/rust/issues/93335> for more information
= help: add `#![feature(asm_experimental_arch)]` to the crate attributes to enable
= note: this compiler was built on 2025-11-07; consider upgrading it if it is out of date
This is somewhat at odds with Documentation/process/changes.rst which
only requires Rust 1.78. I wonder if the rust version requirement should
generally be bumped, or if there should be arch-specific requirements
somewhere in changes.rst or rust/arch-support.rst.
Best regards,
J. Neuschäfer
[1]: https://github.com/rust-lang/rust/pull/147996
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Rust version requirement (was: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le)
2026-02-16 11:23 ` Rust version requirement (was: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le) J. Neuschäfer
@ 2026-02-16 11:29 ` Alice Ryhl
0 siblings, 0 replies; 17+ messages in thread
From: Alice Ryhl @ 2026-02-16 11:29 UTC (permalink / raw)
To: J. Neuschäfer
Cc: Mukesh Kumar Chaurasiya, Venkat Rao Bagalkote, Link Mauve, ojeda,
boqun.feng, gary, bjorn3_gh, lossin, a.hindborg, tmgross, dakr,
corbet, maddy, mpe, npiggin, chleroy, peterz, jpoimboe, jbaron,
rostedt, ardb, rust-for-linux, linux-doc, linux-kernel,
linuxppc-dev
On Mon, Feb 16, 2026 at 12:23:16PM +0100, J. Neuschäfer wrote:
> On Thu, Feb 05, 2026 at 09:12:01PM +0530, Mukesh Kumar Chaurasiya wrote:
> [...]
> > use rust version nightly-2026-01-28
> >
> > the latest one has some issue. I just raised a bug for the rustc
> > here[1].
> >
> > [1] https://github.com/rust-lang/rust/issues/152177
>
> Another reason to use a nightly version is that Rust inline assembly for
> PowerPC will only be stabilized[1] in version 1.94, so current release
> versions fail like this (tested with 1.91.1):
>
> error[E0658]: inline assembly is not stable yet on this architecture
> --> ../rust/kernel/sync/barrier.rs:19:14
> |
> 19 | unsafe { core::arch::asm!("") };
> | ^^^^^^^^^^^^^^^^^^^^
> |
> = note: see issue #93335 <https://github.com/rust-lang/rust/issues/93335> for more information
> = help: add `#![feature(asm_experimental_arch)]` to the crate attributes to enable
> = note: this compiler was built on 2025-11-07; consider upgrading it if it is out of date
>
> This is somewhat at odds with Documentation/process/changes.rst which
> only requires Rust 1.78. I wonder if the rust version requirement should
> generally be bumped, or if there should be arch-specific requirements
> somewhere in changes.rst or rust/arch-support.rst.
>
> Best regards,
> J. Neuschäfer
>
> [1]: https://github.com/rust-lang/rust/pull/147996
The MSRV is planned to be bumped to 1.85.
If it's available as a nightly feature on 1.78, then you can just add
#![feature(asm_experimental_arch)] to lib.rs, which already enables
several other stabilized feature on older compilers.
Otherwise powerpc support can always be gated to require a larger
rustc version than other platforms.
Alice
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2026-02-16 11:29 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-04 21:01 [PATCH V2 0/3] Rust support for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 1/3] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
2026-02-05 8:09 ` Christophe Leroy (CS GROUP)
2026-02-05 8:24 ` Alice Ryhl
2026-02-04 21:01 ` [PATCH V2 2/3] rust: Add PowerPC support Mukesh Kumar Chaurasiya (IBM)
2026-02-04 21:01 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)
2026-02-05 8:14 ` Christophe Leroy (CS GROUP)
2026-02-05 13:52 ` Link Mauve
2026-02-05 14:51 ` Venkat Rao Bagalkote
2026-02-05 15:42 ` Mukesh Kumar Chaurasiya
2026-02-05 19:34 ` Miguel Ojeda
2026-02-05 20:02 ` Nathan Chancellor
2026-02-05 20:15 ` Miguel Ojeda
2026-02-11 22:23 ` Miguel Ojeda
2026-02-16 11:23 ` Rust version requirement (was: [PATCH V2 3/3] powerpc: Enable Rust for ppc64le) J. Neuschäfer
2026-02-16 11:29 ` Alice Ryhl
2026-02-05 15:45 ` [PATCH V2 3/3] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox