Message ID | 20240409-unsaddle-skittle-c93eb77732bb@spud (mailing list archive) |
---|---|
Headers | show |
Series | RISC-V: enable rust | expand |
Conor Dooley <conor@kernel.org> writes: > From: Conor Dooley <conor.dooley@microchip.com> > > I've intentionally not turned on the gcc support, as discussed on > v1. I've also switched over to using the target, but it is a bit heavier > than the one arm64 seems to be using. RISC-V has fewer targets available > and this was the closest. I preserved the redzone disabling, just moved > into the Makefile. Any comment from Gary or the LLVM lads on the target > would be great I think: > https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/targets/riscv64imac_unknown_none_elf.rs > arm64 is using: > https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/targets/aarch64_unknown_none.rs > > I was gonna send this yesterday, but found out last minute I had invalid > code in the target generation script. The kernel test robot had given my > branch the global all-clear - the rust coverage with all the > "depends on !FOO" must really limit the build coverage. I built for x86 > with rust enabled locally this time to make sure.. > > As this as lifted from the state of the Rust-for-Linux tree, the commit > messages from there cannot be preserved, so these patches have commit > messages that I wrote. > > I've tested this on Icicle, and the modules seem to work as expected. > Unfortunately there appear to be implicit 32-bit divisions (or similar) > in core Rust code, so, as in the downstream Rust-for-Linux tree, Rust is > only enabled for 64-bit. Nice, works with my simple test on VisionFive 2 as well! Cool to have Rust support in! Now, BTF just needs to be supported, and I can have Rust *and* BPF in my kernels! :-P \o/ Tested-by: Björn Töpel <bjorn@rivosinc.com>
Hello: This patch was applied to riscv/linux.git (for-next) by Palmer Dabbelt <palmer@rivosinc.com>: On Tue, 9 Apr 2024 18:25:15 +0100 you wrote: > From: Conor Dooley <conor.dooley@microchip.com> > > I've intentionally not turned on the gcc support, as discussed on > v1. I've also switched over to using the target, but it is a bit heavier > than the one arm64 seems to be using. RISC-V has fewer targets available > and this was the closest. I preserved the redzone disabling, just moved > into the Makefile. Any comment from Gary or the LLVM lads on the target > would be great I think: > https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/targets/riscv64imac_unknown_none_elf.rs > arm64 is using: > https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/targets/aarch64_unknown_none.rs > > [...] Here is the summary with links: - [v3,1/1] RISC-V: enable building 64-bit kernels with rust support https://git.kernel.org/riscv/c/81889e8523e6 You are awesome, thank you!
From: Conor Dooley <conor.dooley@microchip.com> I've intentionally not turned on the gcc support, as discussed on v1. I've also switched over to using the target, but it is a bit heavier than the one arm64 seems to be using. RISC-V has fewer targets available and this was the closest. I preserved the redzone disabling, just moved into the Makefile. Any comment from Gary or the LLVM lads on the target would be great I think: https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/targets/riscv64imac_unknown_none_elf.rs arm64 is using: https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/targets/aarch64_unknown_none.rs I was gonna send this yesterday, but found out last minute I had invalid code in the target generation script. The kernel test robot had given my branch the global all-clear - the rust coverage with all the "depends on !FOO" must really limit the build coverage. I built for x86 with rust enabled locally this time to make sure.. As this as lifted from the state of the Rust-for-Linux tree, the commit messages from there cannot be preserved, so these patches have commit messages that I wrote. I've tested this on Icicle, and the modules seem to work as expected. Unfortunately there appear to be implicit 32-bit divisions (or similar) in core Rust code, so, as in the downstream Rust-for-Linux tree, Rust is only enabled for 64-bit. Thanks, Conor. Changes in v3: - Use a builtin target and modify it in kbuild - Drop the kCFI patch, that's been merged independently Changes in v2: - Rebase, since a good bit of time has passed! - Add the extra patch, disabling when CFI_CLANG is enabled. Changes in v1: - rebase on v6.3-rc1 - resort the `um` entry in the arch-support table while adding RISC-V to it - drop 32-bit bits - have another crack at assigning authorship Changes in RFC-RESEND: - fix the asymmetrical additions in the Makefile bits - add cc-cover to my git send-email command... CC: Miguel Ojeda <ojeda@kernel.org> CC: Alex Gaynor <alex.gaynor@gmail.com> CC: Wedson Almeida Filho <wedsonaf@gmail.com> CC: Boqun Feng <boqun.feng@gmail.com> CC: Gary Guo <gary@garyguo.net> CC: Björn Roy Baron <bjorn3_gh@protonmail.com> CC: Jonathan Corbet <corbet@lwn.net> CC: Paul Walmsley <paul.walmsley@sifive.com> CC: Palmer Dabbelt <palmer@dabbelt.com> CC: Nathan Chancellor <nathan@kernel.org> CC: Nick Desaulniers <ndesaulniers@google.com> CC: rust-for-linux@vger.kernel.org CC: linux-doc@vger.kernel.org CC: linux-kernel@vger.kernel.org CC: linux-riscv@lists.infradead.org CC: llvm@lists.linux.dev Miguel Ojeda (1): RISC-V: enable building 64-bit kernels with rust support Documentation/rust/arch-support.rst | 1 + arch/riscv/Kconfig | 1 + arch/riscv/Makefile | 7 +++++++ scripts/generate_rust_target.rs | 6 ++++++ 4 files changed, 15 insertions(+)