On Thu, Sep 5, 2024 at 8:12 AM David Gow <davidgow@xxxxxxxxxx> wrote: > > Not all architectures have core::sync::atomic::AtomicU64 available. In > particular, 32-bit x86 doesn't support it. AtomicU32 is available > everywhere, so use that instead. > > Hopefully we can add AtomicU64 to Rust-for-Linux more broadly, so this > won't be an issue, but it's not supported in core from upstream Rust: > https://doc.rust-lang.org/std/sync/atomic/#portability > > This can be tested on 32-bit x86 UML via: > ./tools/testing/kunit/kunit.py run --make_options LLVM=1 --kconfig_add CONFIG_RUST=y --kconfig_add CONFIG_64BIT=n --kconfig_add CONFIG_FORTIFY_SOURCE=n > > Fixes: 3253aba3408a ("rust: block: introduce `kernel::block::mq` module") > Signed-off-by: David Gow <davidgow@xxxxxxxxxx> > --- > > Hi all, > > I encountered this build error with Rust/UML since the kernel::block::mq > stuff landed. I'm not 100% sure just swapping AtomicU64 with AtomicU32 > is correct -- please correct me if not -- but this does at least get the > Rust/UML/x86-32 builds here compiling and running again. > > (And gives me more encouragement to go to the Rust atomics talk at > Plumbers.) I would probably go with AtomicUsize over AtomicU32 in this case. Alice