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)
Reviewed-by: Link Mauve <linkmauve@linkmauve.fr>
Tested-by: Link Mauve <linkmauve@linkmauve.fr>
Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
---
arch/powerpc/Kconfig | 1 +
arch/powerpc/Makefile | 7 ++++++-
rust/Makefile | 6 ++++++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 1246b3add8ff..a5f50434daf3 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -285,6 +285,7 @@ config PPC
select HAVE_RELIABLE_STACKTRACE
select HAVE_RSEQ
select HAVE_RUST if PPC32
+ 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 589613eaa5dc..9385db478c59 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -61,7 +61,12 @@ else
KBUILD_LDFLAGS_MODULE += $(objtree)/arch/powerpc/lib/crtsavres.o
endif
-KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
+ifdef CONFIG_PPC64
+KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu
+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 7ea7570e3f17..7fe4cbbd176e 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -410,7 +410,13 @@ 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
+
+ifdef CONFIG_PPC64
+BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
+else
BINDGEN_TARGET_powerpc := powerpc-linux-gnu
+endif
+
BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
--
2.53.0
On Sun Mar 29, 2026 at 5:02 PM BST, Mukesh Kumar Chaurasiya (IBM) wrote:
> Enabling rust support for ppc64le only.
This line looks inaccurate now given previous commit just enabled it for PPC32
too.
>
> 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)
>
> Reviewed-by: Link Mauve <linkmauve@linkmauve.fr>
> Tested-by: Link Mauve <linkmauve@linkmauve.fr>
> Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
> Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
> ---
> arch/powerpc/Kconfig | 1 +
> arch/powerpc/Makefile | 7 ++++++-
> rust/Makefile | 6 ++++++
> 3 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 1246b3add8ff..a5f50434daf3 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -285,6 +285,7 @@ config PPC
> select HAVE_RELIABLE_STACKTRACE
> select HAVE_RSEQ
> select HAVE_RUST if PPC32
> + 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 589613eaa5dc..9385db478c59 100644
> --- a/arch/powerpc/Makefile
> +++ b/arch/powerpc/Makefile
> @@ -61,7 +61,12 @@ else
> KBUILD_LDFLAGS_MODULE += $(objtree)/arch/powerpc/lib/crtsavres.o
> endif
>
> -KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu
> +ifdef CONFIG_PPC64
> +KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu
It looks like all it takes to enable PPC BE is to have
#ifdef CONFIG_CPU_LITTLE_ENDIAN
KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu
#else
KBUILD_RUSTFLAGS += --target=powerpc64-unknown-linux-gnu
#endif
(and similarly add bindgen target)?
I think it might worth having PPC32/PPC64/PPC64LE all enabled in a single
commit, and then you can just claim Rust is enabled for PPC and have an
unconditional
select HAVE_RUST
Thoughts?
Best,
Gary
> +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 7ea7570e3f17..7fe4cbbd176e 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -410,7 +410,13 @@ 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
> +
> +ifdef CONFIG_PPC64
> +BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu
> +else
> BINDGEN_TARGET_powerpc := powerpc-linux-gnu
> +endif
> +
> BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH))
> BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
>
On Sun, Mar 29, 2026 at 07:33:43PM +0100, Gary Guo wrote: > On Sun Mar 29, 2026 at 5:02 PM BST, Mukesh Kumar Chaurasiya (IBM) wrote: > > Enabling rust support for ppc64le only. > > This line looks inaccurate now given previous commit just enabled it for PPC32 > too. > Oh yeah, will fix this. > > > > 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) > > > > Reviewed-by: Link Mauve <linkmauve@linkmauve.fr> > > Tested-by: Link Mauve <linkmauve@linkmauve.fr> > > Reviewed-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> > > Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com> > > Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> > > --- > > arch/powerpc/Kconfig | 1 + > > arch/powerpc/Makefile | 7 ++++++- > > rust/Makefile | 6 ++++++ > > 3 files changed, 13 insertions(+), 1 deletion(-) > > > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > > index 1246b3add8ff..a5f50434daf3 100644 > > --- a/arch/powerpc/Kconfig > > +++ b/arch/powerpc/Kconfig > > @@ -285,6 +285,7 @@ config PPC > > select HAVE_RELIABLE_STACKTRACE > > select HAVE_RSEQ > > select HAVE_RUST if PPC32 > > + 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 589613eaa5dc..9385db478c59 100644 > > --- a/arch/powerpc/Makefile > > +++ b/arch/powerpc/Makefile > > @@ -61,7 +61,12 @@ else > > KBUILD_LDFLAGS_MODULE += $(objtree)/arch/powerpc/lib/crtsavres.o > > endif > > > > -KBUILD_RUSTFLAGS += --target=powerpc-unknown-linux-gnu > > +ifdef CONFIG_PPC64 > > +KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu > > It looks like all it takes to enable PPC BE is to have > > #ifdef CONFIG_CPU_LITTLE_ENDIAN > KBUILD_RUSTFLAGS += --target=powerpc64le-unknown-linux-gnu > #else > KBUILD_RUSTFLAGS += --target=powerpc64-unknown-linux-gnu > #endif > > (and similarly add bindgen target)? > > I think it might worth having PPC32/PPC64/PPC64LE all enabled in a single > commit, and then you can just claim Rust is enabled for PPC and have an > unconditional > > select HAVE_RUST > > Thoughts? > BE still has some issues in the compiler. We are working with our LLVM team to get those fixed. We can still add the support for BE, but that won't be compilable as of now. Regards, Mukesh > Best, > Gary > > > +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 7ea7570e3f17..7fe4cbbd176e 100644 > > --- a/rust/Makefile > > +++ b/rust/Makefile > > @@ -410,7 +410,13 @@ 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 > > + > > +ifdef CONFIG_PPC64 > > +BINDGEN_TARGET_powerpc := powerpc64le-linux-gnu > > +else > > BINDGEN_TARGET_powerpc := powerpc-linux-gnu > > +endif > > + > > BINDGEN_TARGET_um := $(BINDGEN_TARGET_$(SUBARCH)) > > BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH)) > > >
© 2016 - 2026 Red Hat, Inc.