From: "Arnd Bergmann" <arnd@arndb.de>
To: "Karl Mehltretter" <kmehltretter@gmail.com>,
"Russell King" <linux@armlinux.org.uk>,
"Miguel Ojeda" <ojeda@kernel.org>
Cc: "Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Tamir Duberstein" <tamird@kernel.org>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"Onur Özkan" <work@onurozkan.dev>,
"Linus Walleij" <linusw@kernel.org>,
"Christian Schrefl" <chrisi.schrefl@gmail.com>,
"Bradley Morgan" <brads@mainlining.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
linux-arm-kernel@lists.infradead.org,
rust-for-linux@vger.kernel.org, llvm@lists.linux.dev,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] ARM: rust: Enable Rust support for ARMv5TE
Date: Sat, 03 Oct 2026 12:45:07 +0200 [thread overview]
Message-ID: <33197b82-3eff-4c87-b370-c677ca31a02a@app.fastmail.com> (raw)
In-Reply-To: <20261003093827.77857-3-kmehltretter@gmail.com>
On Sat, Oct 3, 2026, at 11:38, Karl Mehltretter wrote:
> HAVE_RUST is currently selected for CPU_32v7 only. The
> arm-unknown-linux-gnueabi target used for ARMv7 emits ARMv6
> instructions (+v6), so it cannot be used for ARMv5. Use rustc's
> built-in armv5te-unknown-linux-gnueabi target instead. It keeps the
> Linux EABI (no short enums, unlike the -none-eabi targets) and is
> soft-float and strict-align.
>
> Kernels that also contain ARMv4 or ARMv4T CPUs are built for the
> lowest architecture and stay excluded. CPU_32v5 also covers the ARMv5T
> ARM1020. C code is already built with -march=armv5te there, so Rust
> matches.
None of this makes sense to me: The target should not control
the instruction set, that is what the -march= flag is needed for.
Does that not get passed for Rust?
If an ARMv7 kernel includes ARMv6 instructions, that is broken
on ARMv8 CPUs that are lacking the CP15 barriers and swp style
atomics, so that needs to be fixed.
I don't see what part of rust would depend on ARMv5 instructions,
it should just work on ARMv4T as well, though ARMv4 may be
trickier because missing bx instructions etc.
> ==============================================
> -``arm`` Maintained ARMv7 Little Endian only.
> +``arm`` Maintained ARMv5TE and ARMv7, Little Endian only.
Here you exclude ARMv6K and ARMv8-A-aarch32...
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index ffbc7f386131..f6b14d9f0e1f 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -138,7 +138,7 @@ config ARM
> select MMU_GATHER_RCU_TABLE_FREE if SMP && ARM_LPAE
> select HAVE_REGS_AND_STACK_ACCESS_API
> select HAVE_RSEQ
> - select HAVE_RUST if CPU_LITTLE_ENDIAN && CPU_32v7 && !KASAN
> + select HAVE_RUST if CPU_LITTLE_ENDIAN && (CPU_32v7 || (CPU_32v5 &&
> !CPU_32v4T && !CPU_32v4)) && !KASAN
but here you allow it, so I think one of them should change,
and you need to better explain what the dependency on !CPU_32v4T
is about, and what happens for an ARMv6K-only kernel, compared
to a combined ARMv6K+ARMv7-A one.
> KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y)
> -include $(srctree)/arch/arm/include/asm/unified.h -msoft-float
> +ifdef CONFIG_CPU_32v5
> +KBUILD_RUSTFLAGS += --target=armv5te-unknown-linux-gnueabi
> +else
> KBUILD_RUSTFLAGS += --target=arm-unknown-linux-gnueabi
> +endif
This looks wrong, the choice between armv5 and armv7 should work
the same way as the choice between armv6 and armv7/v8, if I read
the rustc docs correctly, this should be using the target-cpu=
argument on the generic arm-unknown-linux-gnueabi target.
Arnd
next prev parent reply other threads:[~2026-10-03 10:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-03 9:38 [PATCH 0/2] " Karl Mehltretter
2026-10-03 9:38 ` [PATCH 1/2] ARM: cmpxchg: support 2-byte xchg() on pre-ARMv6 CPUs Karl Mehltretter
2026-10-03 10:12 ` Arnd Bergmann
2026-10-03 9:38 ` [PATCH 2/2] ARM: rust: Enable Rust support for ARMv5TE Karl Mehltretter
2026-10-03 10:24 ` Miguel Ojeda
2026-10-03 10:45 ` Arnd Bergmann [this message]
2026-10-03 17:07 ` Karl Mehltretter
2026-10-03 20:54 ` Arnd Bergmann
2026-10-03 16:03 ` [PATCH 0/2] " Bradley Morgan
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=33197b82-3eff-4c87-b370-c677ca31a02a@app.fastmail.com \
--to=arnd@arndb.de \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=brads@mainlining.org \
--cc=chrisi.schrefl@gmail.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=gary@garyguo.net \
--cc=justinstitt@google.com \
--cc=kmehltretter@gmail.com \
--cc=linusw@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=llvm@lists.linux.dev \
--cc=lossin@kernel.org \
--cc=morbo@google.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=ojeda@kernel.org \
--cc=paulmck@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tamird@kernel.org \
--cc=tmgross@umich.edu \
--cc=work@onurozkan.dev \
/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
all inboxes | Powered by JetHome®