All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Laight <david.laight.linux@gmail.com>
To: "Gary Guo" <gary@garyguo.net>
Cc: "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>,
	<sumit.semwal@linaro.org>, <christian.koenig@amd.com>,
	<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>, <tamird@kernel.org>,
	<arnd@arndb.de>, <nsc@kernel.org>, <simona.vetter@ffwll.ch>,
	<linuxppc-dev@lists.ozlabs.org>, <linux-kernel@vger.kernel.org>,
	<linux-media@vger.kernel.org>, <dri-devel@lists.freedesktop.org>,
	<linaro-mm-sig@lists.linaro.org>,
	<rust-for-linux@vger.kernel.org>, <llvm@lists.linux.dev>,
	"Link Mauve" <linkmauve@linkmauve.fr>
Subject: Re: [PATCH V13 5/7] rust: Make __udivdi3() and __umoddi3() panic
Date: Sun, 26 Apr 2026 23:04:08 +0100	[thread overview]
Message-ID: <20260426230408.489c68c3@pumpkin> (raw)
In-Reply-To: <DI35IFD8M019.2WGRH5ADW6NOG@garyguo.net>

On Sun, 26 Apr 2026 15:20:31 +0100
"Gary Guo" <gary@garyguo.net> wrote:

> On Sun Apr 26, 2026 at 8:52 AM BST, Mukesh Kumar Chaurasiya wrote:
> > On Fri, Apr 24, 2026 at 01:43:43PM +0100, Gary Guo wrote:  
> >> On Fri Apr 24, 2026 at 6:47 AM BST, Mukesh Kumar Chaurasiya (IBM) wrote:  
> >> > From: Link Mauve <linkmauve@linkmauve.fr>
> >> >
> >> > 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.
> >> >
> >> > This doesn’t yet fix drm_panic_qr.rs, which also uses __udivdi3 when
> >> > CONFIG_CC_OPTIMIZE_FOR_SIZE=y, but at least makes the rest of the kernel
> >> > build on PPC32.  
> >> 
> >> Can we always build libcore with `-C opt-level=2` even if
> >> `CONFIG_CC_OPTIMIZE_FOR_SIZE` is specified? It feels like a better fix than
> >> stubbing things out.
> >> 
> >> Best,
> >> Gary
> >>   
> > The issue is not coming from libcore itself. It's the driver that's
> > causing this.  
> 
> Sorry. I quoted the wrong part. I was asking if compiling libcore with O2 gets
> rid of its use of the builtins, as that's what the change this commit is for.
> 
> Formatting of u64 will be needed, so we should make sure that these works as
> intended.

This code (from nolibc) will convert u64 to ascii in any base:

#define _U64TOA_RECIP(base) ((base) & 1 ? ~0ull / (base) : (1ull << 63) / ((base) / 2))
static int _u64toa_base(u64 in, char *buffer, unsigned int base, u64 recip)
{
	unsigned int digits = 0;
	unsigned int dig;
	u64 q;
	char *p;
 
	/* Generate least significant digit first */
 	do {

#if defined(__SIZEOF_INT128__) && !defined(__mips__)
		q = ((unsigned __int128)in * recip) >> 64;
#else
		u64 p = (u32)in * (recip >> 32);
		q = (in >> 32) * (recip >> 32) + (p >> 32);
		p = (u32)p + (in >> 32) * (u32)recip;
		q += p >> 32;
#endif
		dig = in - q * base;
		/* Correct for any rounding errors */
		if (dig >= base) {
			dig -= base;
			q++;
 		}

		if (dig > 9)
			dig += 'a' - '0' - 10;
		buffer[digits++] = '0' + dig;
	} while ((in = q));
 
 	buffer[digits] = 0;

	/* Order reverse to result */
	for (p = buffer + digits - 1; p > buffer; buffer++, p--) {
		dig = *buffer;
		*buffer = *p;
		*p = dig;
	}

	return digits;
}

int u64toa_r(u64 in, char *buffer)
{
	return _u64toa_base(in, buffer, 10, _U64TOA_RECIP(10));
}

Not hard to do without any divides at all.

	David

  reply	other threads:[~2026-04-26 22:04 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-24  5:47 [PATCH V13 0/7] Rust support for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-04-24  5:47 ` [PATCH V13 1/7] rust: Fix "multiple candidates for rmeta dependency core" error Mukesh Kumar Chaurasiya (IBM)
2026-04-24  5:47 ` [PATCH V13 2/7] dma-resv: Fix undefined symbol when CONFIG_DMA_SHARED_BUFFER is disabled Mukesh Kumar Chaurasiya (IBM)
2026-04-24  7:56   ` Christian König
2026-04-24  8:06     ` Mukesh Kumar Chaurasiya
2026-04-24  8:25       ` Christian König
2026-04-24  8:34         ` Mukesh Kumar Chaurasiya
2026-04-24  8:44           ` Christian König
2026-04-24  5:47 ` [PATCH V13 3/7] powerpc/jump_label: adjust inline asm to be consistent Mukesh Kumar Chaurasiya (IBM)
2026-04-24  5:47 ` [PATCH V13 4/7] rust/powerpc: Set min rustc version for powerpc Mukesh Kumar Chaurasiya (IBM)
2026-04-24  5:47 ` [PATCH V13 5/7] rust: Make __udivdi3() and __umoddi3() panic Mukesh Kumar Chaurasiya (IBM)
2026-04-24  8:59   ` Arnd Bergmann
2026-04-24  9:14   ` David Laight
2026-04-24  9:43     ` Link Mauve
2026-04-24 10:20       ` Arnd Bergmann
2026-04-24 10:34         ` Miguel Ojeda
2026-04-24 10:26       ` Miguel Ojeda
2026-04-24 11:09       ` David Laight
2026-04-27 16:05       ` [Linaro-mm-sig] " Arnd Bergmann
2026-04-24 11:54   ` Segher Boessenkool
2026-04-24 11:57     ` Segher Boessenkool
2026-04-24 12:53       ` Segher Boessenkool
2026-04-24 12:43   ` Gary Guo
2026-04-26  7:52     ` Mukesh Kumar Chaurasiya
2026-04-26 14:20       ` Gary Guo
2026-04-26 22:04         ` David Laight [this message]
2026-04-27 13:04           ` Gary Guo
2026-04-24  5:47 ` [PATCH V13 6/7] rust: Add PowerPC support Mukesh Kumar Chaurasiya (IBM)
2026-04-24  5:47 ` [PATCH V13 7/7] powerpc: Enable Rust for ppc64le Mukesh Kumar Chaurasiya (IBM)

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=20260426230408.489c68c3@pumpkin \
    --to=david.laight.linux@gmail.com \
    --cc=a.hindborg@kernel.org \
    --cc=aliceryhl@google.com \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=chleroy@kernel.org \
    --cc=christian.koenig@amd.com \
    --cc=dakr@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gary@garyguo.net \
    --cc=jbaron@akamai.com \
    --cc=jpoimboe@kernel.org \
    --cc=justinstitt@google.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linkmauve@linkmauve.fr \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@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=nsc@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=simona.vetter@ffwll.ch \
    --cc=sumit.semwal@linaro.org \
    --cc=tamird@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.