public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Link Mauve <linkmauve@linkmauve.fr>
To: Gary Guo <gary@garyguo.net>
Cc: Link Mauve <linkmauve@linkmauve.fr>,
	Mukesh Kumar Chaurasiya <mkchauras@gmail.com>,
	maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com,
	chleroy@kernel.org, peterz@infradead.org, jpoimboe@kernel.org,
	jbaron@akamai.com, aliceryhl@google.com, rostedt@goodmis.org,
	ardb@kernel.org, ojeda@kernel.org, boqun@kernel.org,
	bjorn3_gh@protonmail.com, lossin@kernel.org,
	a.hindborg@kernel.org, tmgross@umich.edu, dakr@kernel.org,
	nathan@kernel.org, nick.desaulniers+lkml@gmail.com,
	morbo@google.com, justinstitt@google.com,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [PATCH V11 1/4] rust: Fix "multiple candidates for rmeta dependency core" error
Date: Tue, 21 Apr 2026 18:36:58 +0200	[thread overview]
Message-ID: <aeenqoV-dWWW3tZv@luna> (raw)
In-Reply-To: <DHYYH903GZVW.EU2UKXD2ET0S@garyguo.net>

[-- Attachment #1: Type: text/plain, Size: 2748 bytes --]

Hi,

On Tue, Apr 21, 2026 at 04:59:11PM +0100, Gary Guo wrote:
> On Tue Apr 21, 2026 at 11:26 AM BST, Link Mauve wrote:
> > From 2c0a3ec3da6fa1f0151225c05159f7a812317d32 Mon Sep 17 00:00:00 2001
> > From: Link Mauve <linkmauve@linkmauve.fr>
> > Date: Fri, 10 Apr 2026 13:51:24 +0200
> > Subject: [PATCH 3/3] XXX: Workaround for __udivdi3() and __umoddi3()
> > MIME-Version: 1.0
> > Content-Type: text/plain; charset=UTF-8
> > Content-Transfer-Encoding: 8bit
> >
> > The core crate currently depends on these two functions for i64/u64/
> > i128/u128/core::time::Duration formatting, but we shouldn’t use that in
> > the kernel so let’s panic if they are ever called.
> > ---
> >  rust/exports.c | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> >
> > diff --git a/rust/exports.c b/rust/exports.c
> > index 587f0e776aba..5f1cdf13882e 100644
> > --- a/rust/exports.c
> > +++ b/rust/exports.c
> > @@ -12,6 +12,7 @@
> >   */
> >  
> >  #include <linux/export.h>
> > +#include <linux/panic.h>
> >  
> >  #define EXPORT_SYMBOL_RUST_GPL(sym) extern int sym; EXPORT_SYMBOL_GPL(sym)
> >  
> > @@ -20,6 +21,14 @@
> >  #include "exports_bindings_generated.h"
> >  #include "exports_kernel_generated.h"
> >  
> > +void __udivdi3(void) {
> > +	panic("__udivdi3() called but shouldn’t be made available on this architecture!\n");
> > +}
> > +
> > +void __umoddi3(void) {
> > +	panic("__umoddi3() called but shouldn’t be made available on this architecture!\n");
> > +}
> > +
> 
> This should be added to compiler_builtins.rs and gated for PPC32.

Thanks for the suggestion, this already seems like a much better
location for that!

This works fine for the core crate, but now panic_qr also gets the same
issue, here it is with V=1:
```
+ powerpc-linux-musl-ld -EB -m elf32ppc -z noexecstack --no-warn-rwx-segments -Bstatic --build-id=sha1 --orphan-handling=warn --script=./arch/powerpc/kernel/vmlinux.lds --strip-debug -o .tmp_vmlinux1 --whole-archive vmlinux.a .vmlinux.export.o init/version-timestamp.o --no-whole-archive --start-group --end-group .tmp_vmlinux0.kallsyms.o
powerpc-linux-musl-ld: drivers/gpu/drm/drm_panic_qr.o: in function `<drm_panic_qr::SegmentIterator as core::iter::traits::iterator::Iterator>::next':
drm_panic_qr.f39a15fa3c72e9fe-cgu.0:(.text+0x200c): undefined reference to `__udivdi3'
```

From a cursory look at the SegmentIterator::next() function I don’t
understand where the division could come up, but it’s actually nice to
get an error when operations which shouldn’t happen happen anyway, it
makes it more likely to get them fixed.

> 
> Best,
> Gary
> 
> >  // For modules using `rust/build_error.rs`.
> >  #ifdef CONFIG_RUST_BUILD_ASSERT_ALLOW
> >  EXPORT_SYMBOL_RUST_GPL(rust_build_error);
> 

-- 
Link Mauve

[-- Attachment #2: 0001-rust-Make-__udivdi3-and-__umoddi3-panic.patch --]
[-- Type: text/plain, Size: 1613 bytes --]

From c938984c5974ba636699ce0e2cfabeb45a8d861d Mon Sep 17 00:00:00 2001
From: Link Mauve <linkmauve@linkmauve.fr>
Date: Fri, 10 Apr 2026 13:51:24 +0200
Subject: [PATCH] rust: Make __udivdi3() and __umoddi3() panic
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The core crate currently depends on these two functions for i64/u64/
i128/u128/core::time::Duration formatting, but we shouldn’t use that in
the kernel so let’s panic if they are ever called.

Signed-off-by: Link Mauve <linkmauve@linkmauve.fr>
---
 rust/Makefile             | 4 ++++
 rust/compiler_builtins.rs | 6 ++++++
 2 files changed, 10 insertions(+)

diff --git a/rust/Makefile b/rust/Makefile
index 99537c2c55ee..568f241a21a7 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -626,6 +626,10 @@ ifneq ($(or $(CONFIG_ARM64),$(and $(CONFIG_RISCV),$(CONFIG_64BIT))),)
 		__ashrti3 \
 		__ashlti3 __lshrti3
 endif
+ifdef CONFIG_PPC32
+	redirect-intrinsics += \
+		__udivdi3 __umoddi3
+endif
 
 ifdef CONFIG_MODVERSIONS
 cmd_gendwarfksyms = $(if $(skip_gendwarfksyms),, \
diff --git a/rust/compiler_builtins.rs b/rust/compiler_builtins.rs
index dd16c1dc899c..fc6b54636dd5 100644
--- a/rust/compiler_builtins.rs
+++ b/rust/compiler_builtins.rs
@@ -97,5 +97,11 @@ pub extern "C" fn $ident() {
     __aeabi_uldivmod,
 });
 
+#[cfg(target_arch = "powerpc")]
+define_panicking_intrinsics!("`u64` division/modulo should not be used", {
+    __udivdi3,
+    __umoddi3,
+});
+
 // NOTE: if you are adding a new intrinsic here, you should also add it to
 // `redirect-intrinsics` in `rust/Makefile`.
-- 
2.54.0


  reply	other threads:[~2026-04-21 16:37 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-17 15:22 [PATCH V11 0/4] Rust support for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-04-17 15:22 ` [PATCH V11 1/4] rust: Fix "multiple candidates for rmeta dependency core" error Mukesh Kumar Chaurasiya (IBM)
2026-04-21  9:38   ` Link Mauve
2026-04-21  9:55     ` Mukesh Kumar Chaurasiya
2026-04-21 10:26       ` Link Mauve
2026-04-21 12:19         ` Mukesh Kumar Chaurasiya
2026-04-21 12:26           ` Link Mauve
2026-04-21 15:53             ` Mukesh Kumar Chaurasiya
2026-04-21 15:57               ` Gary Guo
2026-04-21 17:47                 ` Mukesh Kumar Chaurasiya
2026-04-21 18:10                   ` Gary Guo
2026-04-21 18:16                   ` Miguel Ojeda
2026-04-21 16:00               ` Miguel Ojeda
2026-04-21 17:28                 ` Mukesh Kumar Chaurasiya
2026-04-21 15:59         ` Gary Guo
2026-04-21 16:36           ` Link Mauve [this message]
2026-04-21 16:51             ` Gary Guo
2026-04-21 17:10               ` Link Mauve
2026-04-21 17:17                 ` Link Mauve
2026-04-17 15:22 ` [PATCH V11 2/4] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
2026-04-17 15:22 ` [PATCH V11 3/4] rust: Add PowerPC support Mukesh Kumar Chaurasiya (IBM)
2026-04-21 15:59   ` Gary Guo
2026-04-17 15:22 ` [PATCH V11 4/4] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)
2026-04-21 15:59   ` Gary Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aeenqoV-dWWW3tZv@luna \
    --to=linkmauve@linkmauve.fr \
    --cc=a.hindborg@kernel.org \
    --cc=aliceryhl@google.com \
    --cc=ardb@kernel.org \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=chleroy@kernel.org \
    --cc=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=jbaron@akamai.com \
    --cc=jpoimboe@kernel.org \
    --cc=justinstitt@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=llvm@lists.linux.dev \
    --cc=lossin@kernel.org \
    --cc=maddy@linux.ibm.com \
    --cc=mkchauras@gmail.com \
    --cc=morbo@google.com \
    --cc=mpe@ellerman.id.au \
    --cc=nathan@kernel.org \
    --cc=nick.desaulniers+lkml@gmail.com \
    --cc=npiggin@gmail.com \
    --cc=ojeda@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tmgross@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox