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(-)
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
> 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.
© 2016 - 2026 Red Hat, Inc.