Re: [PATCH V3 0/3] Rust support for powerpc

Venkat
2026-02-06T16:56:02Z

> On 5 Feb 2026, at 11:34 PM, Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> wrote:
>
> 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:
> V2 -> V3:
> - Splited HAVE_RUST in 2 lines
> - BINDGEN_TARGET_powerpc initialized before assigning the same to
> BINDGEN_TARGET
> V2: https://lore.kernel.org/all/20260204210125.613350-1-mkchauras@gmail.com
>
> 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 | 2 ++
> arch/powerpc/Makefile | 9 +++++++++
> arch/powerpc/include/asm/jump_label.h | 23 +++++++++++++----------
> rust/Makefile | 12 +++++++++++-
> 5 files changed, 36 insertions(+), 11 deletions(-)
>
> --
> 2.52.0
>

Tested this patch set, by applying on mainline kernel. Attached is the .config file used.

Please add below tag.

Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>

Logs:

rustc --version
rustc 1.95.0-nightly (e96bb7e44 2026-01-27)

llvm-18.1.8-3.el9.ppc64le

sudo insmod samples/rust/rust_minimal.ko
[ 39.532119] rust_minimal: loading out-of-tree module taints kernel.
[ 39.532132] rust_minimal: module verification failed: signature and/or required key missing - tainting kernel
[ 39.532856] rust_minimal: Rust minimal sample (init)
[ 39.532860] rust_minimal: Am I built-in? false
[ 39.532864] rust_minimal: test_parameter: 1
# dmesg | tail -n 30
[ 3.418850] systemd[1]: Mounted Kernel Trace File System.
[ 3.419194] systemd[1]: Finished Create List of Static Device Nodes.
[ 3.419482] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[ 3.419647] systemd[1]: Finished Load Kernel Module configfs.
[ 3.419913] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 3.420056] systemd[1]: Finished Load Kernel Module drm.
[ 3.420405] systemd[1]: Finished Read and set NIS domainname from /etc/sysconfig/network.
[ 3.420694] systemd[1]: Finished Generate network units from Kernel command line.
[ 3.422214] systemd[1]: Mounting Kernel Configuration File System...
[ 3.423543] systemd[1]: Finished Apply Kernel Variables.
[ 3.424011] systemd[1]: Mounted Kernel Configuration File System.
[ 3.430589] systemd[1]: Started Journal Service.
[ 3.477706] fuse: init (API version 7.45)
[ 3.548678] EXT4-fs (sda3): re-mounted 78691517-64fe-451b-9009-14359b774643 r/w.
[ 3.556791] systemd-journald[640]: Received client request to flush runtime journal.
[ 3.681167] Adding 10485696k swap on /dev/sda2. Priority:-1 extents:1 across:10485696k SS
[ 3.693490] pseries_rng: Registering IBM pSeries RNG driver
[ 3.693904] cryptd: max_cpu_qlen set to 1000
[ 4.702590] RPC: Registered named UNIX socket transport module.
[ 4.702604] RPC: Registered udp transport module.
[ 4.702607] RPC: Registered tcp transport module.
[ 4.702609] RPC: Registered tcp-with-tls transport module.
[ 4.702612] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 6.701147] block sda: the capability attribute has been deprecated.
[ 10.150485] fbcon: Taking over console
[ 39.532119] rust_minimal: loading out-of-tree module taints kernel.
[ 39.532132] rust_minimal: module verification failed: signature and/or required key missing - tainting kernel
[ 39.532856] rust_minimal: Rust minimal sample (init)
[ 39.532860] rust_minimal: Am I built-in? false
[ 39.532864] rust_minimal: test_parameter: 1
# sudo rmmod rust_minimal
[ 4125.461822] rust_minimal: My numbers are [72, 108, 200]
[ 4125.461839] rust_minimal: Rust minimal sample (exit)
# sudo insmod samples/rust/rust_print.ko
[ 4142.492146] rust_print: Rust printing macros sample (init)
[ 4142.492158] rust_print: Emergency message (level 0) without args
[ 4142.492161] rust_print: Alert message (level 1) without args
[ 4142.492163] rust_print: Critical message (level 2) without args
[ 4142.492166] rust_print: Error message (level 3) without args
[ 4142.492169] rust_print: Warning message (level 4) without args
[ 4142.492171] rust_print: Notice message (level 5) without args
[ 4142.492174] rust_print: Info message (level 6) without args
[ 4142.492176] rust_print: A line that is continued without args
[ 4142.492181] rust_print: Emergency message (level 0) with args
[ 4142.492185] rust_print: Alert message (level 1) with args
[ 4142.492188] rust_print: Critical message (level 2) with args
[ 4142.492190] rust_print: Error message (level 3) with args
[ 4142.492193] rust_print: Warning message (level 4) with args
[ 4142.492195] rust_print: Notice message (level 5) with args
[ 4142.492197] rust_print: Info message (level 6) with args
[ 4142.492200] rust_print: A line that is continued with args
[ 4142.492205] rust_print: 1
[ 4142.492206] rust_print: "hello, world"
[ 4142.492208] rust_print: [rust_print_main.rs:35:5] c = "hello, world"
[ 4142.492213] rust_print: Arc<dyn Display> says 42
[ 4142.492214] rust_print: Arc<dyn Display> says hello, world
# dmesg | tail -n 50
[ 3.419913] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 3.420056] systemd[1]: Finished Load Kernel Module drm.
[ 3.420405] systemd[1]: Finished Read and set NIS domainname from /etc/sysconfig/network.
[ 3.420694] systemd[1]: Finished Generate network units from Kernel command line.
[ 3.422214] systemd[1]: Mounting Kernel Configuration File System...
[ 3.423543] systemd[1]: Finished Apply Kernel Variables.
[ 3.424011] systemd[1]: Mounted Kernel Configuration File System.
[ 3.430589] systemd[1]: Started Journal Service.
[ 3.477706] fuse: init (API version 7.45)
[ 3.548678] EXT4-fs (sda3): re-mounted 78691517-64fe-451b-9009-14359b774643 r/w.
[ 3.556791] systemd-journald[640]: Received client request to flush runtime journal.
[ 3.681167] Adding 10485696k swap on /dev/sda2. Priority:-1 extents:1 across:10485696k SS
[ 3.693490] pseries_rng: Registering IBM pSeries RNG driver
[ 3.693904] cryptd: max_cpu_qlen set to 1000
[ 4.702590] RPC: Registered named UNIX socket transport module.
[ 4.702604] RPC: Registered udp transport module.
[ 4.702607] RPC: Registered tcp transport module.
[ 4.702609] RPC: Registered tcp-with-tls transport module.
[ 4.702612] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 6.701147] block sda: the capability attribute has been deprecated.
[ 10.150485] fbcon: Taking over console
[ 39.532119] rust_minimal: loading out-of-tree module taints kernel.
[ 39.532132] rust_minimal: module verification failed: signature and/or required key missing - tainting kernel
[ 39.532856] rust_minimal: Rust minimal sample (init)
[ 39.532860] rust_minimal: Am I built-in? false
[ 39.532864] rust_minimal: test_parameter: 1
[ 4125.461822] rust_minimal: My numbers are [72, 108, 200]
[ 4125.461839] rust_minimal: Rust minimal sample (exit)
[ 4142.492146] rust_print: Rust printing macros sample (init)
[ 4142.492158] rust_print: Emergency message (level 0) without args
[ 4142.492161] rust_print: Alert message (level 1) without args
[ 4142.492163] rust_print: Critical message (level 2) without args
[ 4142.492166] rust_print: Error message (level 3) without args
[ 4142.492169] rust_print: Warning message (level 4) without args
[ 4142.492171] rust_print: Notice message (level 5) without args
[ 4142.492174] rust_print: Info message (level 6) without args
[ 4142.492176] rust_print: A line that is continued without args
[ 4142.492181] rust_print: Emergency message (level 0) with args
[ 4142.492185] rust_print: Alert message (level 1) with args
[ 4142.492188] rust_print: Critical message (level 2) with args
[ 4142.492190] rust_print: Error message (level 3) with args
[ 4142.492193] rust_print: Warning message (level 4) with args
[ 4142.492195] rust_print: Notice message (level 5) with args
[ 4142.492197] rust_print: Info message (level 6) with args
[ 4142.492200] rust_print: A line that is continued with args
[ 4142.492205] rust_print: 1
[ 4142.492206] rust_print: "hello, world"
[ 4142.492208] rust_print: [rust_print_main.rs:35:5] c = "hello, world"
[ 4142.492213] rust_print: Arc<dyn Display> says 42
[ 4142.492214] rust_print: Arc<dyn Display> says hello, world
# sudo rmmod rust_print
[ 4142.492217] rust_print: "hello, world"
[ 4153.334714] rust_print: Rust printing macros sample (exit)

# sudo rmmod rust_debugfs

Regards,
Venkat.