public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: David Laight <david.laight.linux@gmail•com>
To: Eric Biggers <ebiggers@kernel•org>
Cc: Christoph Hellwig <hch@lst•de>,
	Andrew Morton <akpm@linux-foundation•org>,
	Richard Henderson <richard.henderson@linaro•org>,
	Matt Turner <mattst88@gmail•com>,
	Magnus Lindholm <linmag7@gmail•com>,
	Russell King <linux@armlinux•org.uk>,
	Catalin Marinas <catalin.marinas@arm•com>,
	Will Deacon <will@kernel•org>,
	Huacai Chen <chenhuacai@kernel•org>,
	WANG Xuerui <kernel@xen0n•name>,
	Madhavan Srinivasan <maddy@linux•ibm.com>,
	Michael Ellerman <mpe@ellerman•id.au>,
	Nicholas Piggin <npiggin@gmail•com>,
	"Christophe Leroy (CS GROUP)" <chleroy@kernel•org>,
	Paul Walmsley <pjw@kernel•org>,
	Palmer Dabbelt <palmer@dabbelt•com>,
	Albert Ou <aou@eecs•berkeley.edu>,
	Alexandre Ghiti <alex@ghiti•fr>,
	Heiko Carstens <hca@linux•ibm.com>,
	Vasily Gorbik <gor@linux•ibm.com>,
	Alexander Gordeev <agordeev@linux•ibm.com>,
	Christian Borntraeger <borntraeger@linux•ibm.com>,
	Sven Schnelle <svens@linux•ibm.com>,
	"David S. Miller" <davem@davemloft•net>,
	Andreas Larsson <andreas@gaisler•com>,
	Richard Weinberger <richard@nod•at>,
	Anton Ivanov <anton.ivanov@cambridgegreys•com>,
	Johannes Berg <johannes@sipsolutions•net>,
	Thomas Gleixner <tglx@kernel•org>, Ingo Molnar <mingo@redhat•com>,
	Borislav Petkov <bp@alien8•de>,
	Dave Hansen <dave.hansen@linux•intel.com>,
	x86@kernel•org, "H. Peter Anvin" <hpa@zytor•com>,
	Herbert Xu <herbert@gondor•apana.org.au>,
	Dan Williams <dan.j.williams@intel•com>, Chris Mason <clm@fb•com>,
	David Sterba <dsterba@suse•com>, Arnd Bergmann <arnd@arndb•de>,
	Song Liu <song@kernel•org>, Yu Kuai <yukuai@fnnas•com>,
	Li Nan <linan122@huawei•com>, Theodore Ts'o <tytso@mit•edu>,
	"Jason A. Donenfeld" <Jason@zx2c4•com>,
	linux-alpha@vger•kernel.org, linux-kernel@vger•kernel.org,
	linux-arm-kernel@lists•infradead.org, loongarch@lists•linux.dev,
	linuxppc-dev@lists•ozlabs.org, linux-riscv@lists•infradead.org,
	linux-s390@vger•kernel.org, sparclinux@vger•kernel.org,
	linux-um@lists•infradead.org, linux-crypto@vger•kernel.org,
	linux-btrfs@vger•kernel.org, linux-arch@vger•kernel.org,
	linux-raid@vger•kernel.org
Subject: Re: [PATCH 26/27] random: factor out a __limit_random_u32_below helper
Date: Thu, 12 Mar 2026 08:38:53 +0000	[thread overview]
Message-ID: <20260312083853.01dc18d3@pumpkin> (raw)
In-Reply-To: <20260311222935.GA3161@quark>

On Wed, 11 Mar 2026 15:29:35 -0700
Eric Biggers <ebiggers@kernel•org> wrote:

> On Wed, Mar 11, 2026 at 08:03:58AM +0100, Christoph Hellwig wrote:
> > Factor out the guts of __get_random_u32_below into a new helper,
> > so that callers with their own prng state can reuse this code.
> > 
> > Signed-off-by: Christoph Hellwig <hch@lst•de>  
> 
> I think I'd prefer that the test just uses the mod operation instead,
> like many of the existing tests do:
> 
>     prandom_u32_state(&rng) % ceil

Or possibly what the old code used:
	(prandom_u32_state(&rnd) * (u64)ceil) >> 32

Which distributes the values evenly across the range although
some values happen 1 more time than others.
I suspect that is good enough for a lot of the users of the cryptographic
random number generator as well.

	David

> 
> Yes, when ceil isn't a power of 2 the result isn't uniformly
> distributed.  But that's perfectly fine for these tests, especially with
> the values of ceil being used being far smaller than U32_MAX.
> 
> There's been an effort to keep the cryptographic random number generator
> (drivers/char/random.c and include/linux/random.h) separate from the
> non-cryptographic random number generator (lib/random32.c and
> include/linux/prandom.h).  This patch feels like it's going in a
> slightly wrong direction, where random.c gains a function that's used
> with both cryptographic and non-cryptographic random numbers.
> 
> And if someone actually needs a fully unform distribution, then they'd
> probably want cryptographic random numbers as well.
> 
> So I'm not sure the proposed combination of "fully uniform
> non-cryptographic random numbers" makes much sense.
> 
> Plus the '% ceil' implementation is much easier to understand.
> 
> - Eric
> 



  reply	other threads:[~2026-03-12  8:39 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-11  7:03 cleanup the RAID5 XOR library v2 Christoph Hellwig
2026-03-11  7:03 ` [PATCH 01/27] xor: assert that xor_blocks is not from preemptible user context Christoph Hellwig
2026-03-11  7:03 ` [PATCH 02/27] arm/xor: remove in_interrupt() handling Christoph Hellwig
2026-03-11  7:03 ` [PATCH 03/27] um/xor: cleanup xor.h Christoph Hellwig
2026-03-11  8:45   ` Richard Weinberger
2026-03-11  7:03 ` [PATCH 04/27] xor: move to lib/raid/ Christoph Hellwig
2026-03-11  7:03 ` [PATCH 05/27] xor: small cleanups Christoph Hellwig
2026-03-11  7:03 ` [PATCH 06/27] xor: cleanup registration and probing Christoph Hellwig
2026-03-11  7:03 ` [PATCH 07/27] xor: split xor.h Christoph Hellwig
2026-03-11  7:03 ` [PATCH 08/27] xor: remove macro abuse for XOR implementation registrations Christoph Hellwig
2026-03-11  7:03 ` [PATCH 09/27] xor: move generic implementations out of asm-generic/xor.h Christoph Hellwig
2026-03-11  7:03 ` [PATCH 10/27] alpha: move the XOR code to lib/raid/ Christoph Hellwig
2026-03-16 22:12   ` Magnus Lindholm
2026-03-11  7:03 ` [PATCH 11/27] arm: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 12/27] arm64: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 13/27] loongarch: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 14/27] powerpc: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 15/27] riscv: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 16/27] sparc: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 17/27] s390: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 18/27] x86: " Christoph Hellwig
2026-03-11  7:03 ` [PATCH 19/27] xor: avoid indirect calls for arm64-optimized ops Christoph Hellwig
2026-03-11  7:03 ` [PATCH 20/27] xor: make xor.ko self-contained in lib/raid/ Christoph Hellwig
2026-03-11  7:03 ` [PATCH 21/27] xor: add a better public API Christoph Hellwig
2026-03-11  7:03 ` [PATCH 22/27] async_xor: use xor_gen Christoph Hellwig
2026-03-11  7:03 ` [PATCH 23/27] btrfs: " Christoph Hellwig
2026-03-12  6:14   ` David Sterba
2026-03-11  7:03 ` [PATCH 24/27] xor: pass the entire operation to the low-level ops Christoph Hellwig
2026-03-11  7:03 ` [PATCH 25/27] xor: use static_call for xor_gen Christoph Hellwig
2026-03-11  7:03 ` [PATCH 26/27] random: factor out a __limit_random_u32_below helper Christoph Hellwig
2026-03-11 22:29   ` Eric Biggers
2026-03-12  8:38     ` David Laight [this message]
2026-03-12 13:46   ` Jason A. Donenfeld
2026-03-11  7:03 ` [PATCH 27/27] xor: add a kunit test case Christoph Hellwig
2026-03-12  0:54   ` Eric Biggers
2026-03-11 18:57 ` cleanup the RAID5 XOR library v2 Andrew Morton

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=20260312083853.01dc18d3@pumpkin \
    --to=david.laight.linux@gmail$(echo .)com \
    --cc=Jason@zx2c4$(echo .)com \
    --cc=agordeev@linux$(echo .)ibm.com \
    --cc=akpm@linux-foundation$(echo .)org \
    --cc=alex@ghiti$(echo .)fr \
    --cc=andreas@gaisler$(echo .)com \
    --cc=anton.ivanov@cambridgegreys$(echo .)com \
    --cc=aou@eecs$(echo .)berkeley.edu \
    --cc=arnd@arndb$(echo .)de \
    --cc=borntraeger@linux$(echo .)ibm.com \
    --cc=bp@alien8$(echo .)de \
    --cc=catalin.marinas@arm$(echo .)com \
    --cc=chenhuacai@kernel$(echo .)org \
    --cc=chleroy@kernel$(echo .)org \
    --cc=clm@fb$(echo .)com \
    --cc=dan.j.williams@intel$(echo .)com \
    --cc=dave.hansen@linux$(echo .)intel.com \
    --cc=davem@davemloft$(echo .)net \
    --cc=dsterba@suse$(echo .)com \
    --cc=ebiggers@kernel$(echo .)org \
    --cc=gor@linux$(echo .)ibm.com \
    --cc=hca@linux$(echo .)ibm.com \
    --cc=hch@lst$(echo .)de \
    --cc=herbert@gondor$(echo .)apana.org.au \
    --cc=hpa@zytor$(echo .)com \
    --cc=johannes@sipsolutions$(echo .)net \
    --cc=kernel@xen0n$(echo .)name \
    --cc=linan122@huawei$(echo .)com \
    --cc=linmag7@gmail$(echo .)com \
    --cc=linux-alpha@vger$(echo .)kernel.org \
    --cc=linux-arch@vger$(echo .)kernel.org \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    --cc=linux-btrfs@vger$(echo .)kernel.org \
    --cc=linux-crypto@vger$(echo .)kernel.org \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=linux-raid@vger$(echo .)kernel.org \
    --cc=linux-riscv@lists$(echo .)infradead.org \
    --cc=linux-s390@vger$(echo .)kernel.org \
    --cc=linux-um@lists$(echo .)infradead.org \
    --cc=linux@armlinux$(echo .)org.uk \
    --cc=linuxppc-dev@lists$(echo .)ozlabs.org \
    --cc=loongarch@lists$(echo .)linux.dev \
    --cc=maddy@linux$(echo .)ibm.com \
    --cc=mattst88@gmail$(echo .)com \
    --cc=mingo@redhat$(echo .)com \
    --cc=mpe@ellerman$(echo .)id.au \
    --cc=npiggin@gmail$(echo .)com \
    --cc=palmer@dabbelt$(echo .)com \
    --cc=pjw@kernel$(echo .)org \
    --cc=richard.henderson@linaro$(echo .)org \
    --cc=richard@nod$(echo .)at \
    --cc=song@kernel$(echo .)org \
    --cc=sparclinux@vger$(echo .)kernel.org \
    --cc=svens@linux$(echo .)ibm.com \
    --cc=tglx@kernel$(echo .)org \
    --cc=tytso@mit$(echo .)edu \
    --cc=will@kernel$(echo .)org \
    --cc=x86@kernel$(echo .)org \
    --cc=yukuai@fnnas$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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