From: Boqun Feng <boqun.feng@gmail.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Jamie Cunliffe <Jamie.Cunliffe@arm.com>,
linux-arm-kernel@lists.infradead.org,
rust-for-linux@vger.kernel.org, Miguel Ojeda <ojeda@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
steve.capper@arm.com, Asahi Lina <lina@asahilina.net>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
linux-clk@vger.kernel.org
Subject: Re: [PATCH v4 2/2] arm64: rust: Enable Rust support for AArch64
Date: Fri, 20 Oct 2023 11:33:10 -0700 [thread overview]
Message-ID: <ZTLH5o0GlFBYsAHq@boqun-archlinux> (raw)
In-Reply-To: <3cc3b66d-7190-477c-af04-a5d06a0d50fe@lunn.ch>
On Fri, Oct 20, 2023 at 07:21:08PM +0200, Andrew Lunn wrote:
> > +``arm64`` Maintained Little Endian only.
>
> This question is just out of curiosity, not the patchset itself.
>
> What is missing to make big endian work?
>
FWIW, I tried the following:
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 8784284988e5..b697c2d7da68 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -227,7 +227,7 @@ config ARM64
select HAVE_FUNCTION_ARG_ACCESS_API
select MMU_GATHER_RCU_TABLE_FREE
select HAVE_RSEQ
- select HAVE_RUST if CPU_LITTLE_ENDIAN
+ select HAVE_RUST
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_KPROBES
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 4562a8173e90..4621f1e00e06 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -41,7 +41,11 @@ KBUILD_CFLAGS += -mgeneral-regs-only \
KBUILD_CFLAGS += $(call cc-disable-warning, psabi)
KBUILD_AFLAGS += $(compat_vdso)
+ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
+KBUILD_RUSTFLAGS += --target aarch64_be-unknown-linux-gnu -C target-feature="-neon"
+else
KBUILD_RUSTFLAGS += --target aarch64-unknown-none -C target-feature="-neon"
+endif
KBUILD_CFLAGS += $(call cc-option,-mabi=lp64)
KBUILD_AFLAGS += $(call cc-option,-mabi=lp64)
and ran the following kunit command (it will run a few tests in a qemu
emulated VM):
./tools/testing/kunit/kunit.py run --make_options LLVM=1 --arch arm64 --kconfig_add CONFIG_RUST=y --kconfig_add CONFIG_CPU_BIG_ENDIAN=y
The kernel was built successfully, and all Rust related tests passed.
Of course this doesn't mean a lot, we still need people with deep
Rust compiler knowledge to confirm whether the support is completed or
not. But I think if people want to do experiments, the tool is there.
P.S. An unrelated topic: I found a few clk related tests (in
drivers/clk/clk-gate_test.c IIUC) don't pass (mostly due to that the
expected values don't handle big endian), a sample failure output:
[11:13:26] # clk_gate_test_enable: EXPECTATION FAILED at drivers/clk/clk-gate_test.c:169
[11:13:26] Expected enable_val == ctx->fake_reg, but
[11:13:26] enable_val == 32 (0x20)
[11:13:26] ctx->fake_reg == 536870912 (0x20000000)
[11:13:26] clk_unregister: unregistering prepared clock: test_gate
[11:13:26] clk_unregister: unregistering prepared clock: test_parent
[11:13:26] [FAILED] clk_gate_test_enable
(Cc clk folks)
Regards,
Boqun
> Network developers have expressed an interesting in testing Rust code
> on big endian systems, since the code should work on both endians. It
> might be easier to get an ARM board running big endian than get access
> to an S390x machine.
>
> Andrew
WARNING: multiple messages have this Message-ID (diff)
From: Boqun Feng <boqun.feng@gmail.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Jamie Cunliffe <Jamie.Cunliffe@arm.com>,
linux-arm-kernel@lists.infradead.org,
rust-for-linux@vger.kernel.org, Miguel Ojeda <ojeda@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
steve.capper@arm.com, Asahi Lina <lina@asahilina.net>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
linux-clk@vger.kernel.org
Subject: Re: [PATCH v4 2/2] arm64: rust: Enable Rust support for AArch64
Date: Fri, 20 Oct 2023 11:33:10 -0700 [thread overview]
Message-ID: <ZTLH5o0GlFBYsAHq@boqun-archlinux> (raw)
In-Reply-To: <3cc3b66d-7190-477c-af04-a5d06a0d50fe@lunn.ch>
On Fri, Oct 20, 2023 at 07:21:08PM +0200, Andrew Lunn wrote:
> > +``arm64`` Maintained Little Endian only.
>
> This question is just out of curiosity, not the patchset itself.
>
> What is missing to make big endian work?
>
FWIW, I tried the following:
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 8784284988e5..b697c2d7da68 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -227,7 +227,7 @@ config ARM64
select HAVE_FUNCTION_ARG_ACCESS_API
select MMU_GATHER_RCU_TABLE_FREE
select HAVE_RSEQ
- select HAVE_RUST if CPU_LITTLE_ENDIAN
+ select HAVE_RUST
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_KPROBES
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index 4562a8173e90..4621f1e00e06 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -41,7 +41,11 @@ KBUILD_CFLAGS += -mgeneral-regs-only \
KBUILD_CFLAGS += $(call cc-disable-warning, psabi)
KBUILD_AFLAGS += $(compat_vdso)
+ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
+KBUILD_RUSTFLAGS += --target aarch64_be-unknown-linux-gnu -C target-feature="-neon"
+else
KBUILD_RUSTFLAGS += --target aarch64-unknown-none -C target-feature="-neon"
+endif
KBUILD_CFLAGS += $(call cc-option,-mabi=lp64)
KBUILD_AFLAGS += $(call cc-option,-mabi=lp64)
and ran the following kunit command (it will run a few tests in a qemu
emulated VM):
./tools/testing/kunit/kunit.py run --make_options LLVM=1 --arch arm64 --kconfig_add CONFIG_RUST=y --kconfig_add CONFIG_CPU_BIG_ENDIAN=y
The kernel was built successfully, and all Rust related tests passed.
Of course this doesn't mean a lot, we still need people with deep
Rust compiler knowledge to confirm whether the support is completed or
not. But I think if people want to do experiments, the tool is there.
P.S. An unrelated topic: I found a few clk related tests (in
drivers/clk/clk-gate_test.c IIUC) don't pass (mostly due to that the
expected values don't handle big endian), a sample failure output:
[11:13:26] # clk_gate_test_enable: EXPECTATION FAILED at drivers/clk/clk-gate_test.c:169
[11:13:26] Expected enable_val == ctx->fake_reg, but
[11:13:26] enable_val == 32 (0x20)
[11:13:26] ctx->fake_reg == 536870912 (0x20000000)
[11:13:26] clk_unregister: unregistering prepared clock: test_gate
[11:13:26] clk_unregister: unregistering prepared clock: test_parent
[11:13:26] [FAILED] clk_gate_test_enable
(Cc clk folks)
Regards,
Boqun
> Network developers have expressed an interesting in testing Rust code
> on big endian systems, since the code should work on both endians. It
> might be easier to get an ARM board running big endian than get access
> to an S390x machine.
>
> Andrew
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-10-20 18:33 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-20 15:50 [PATCH v4 0/2] Rust enablement for AArch64 Jamie Cunliffe
2023-10-20 15:50 ` Jamie Cunliffe
2023-10-20 15:50 ` [PATCH v4 1/2] rust: Refactor the build target to allow the use of builtin targets Jamie Cunliffe
2023-10-20 15:50 ` Jamie Cunliffe
2023-10-22 10:55 ` Catalin Marinas
2023-10-22 10:55 ` Catalin Marinas
2023-10-22 11:07 ` Ingo Molnar
2023-10-22 11:07 ` Ingo Molnar
2023-10-31 0:24 ` Trevor Gross
2023-10-31 0:24 ` Trevor Gross
2023-10-31 11:58 ` Catalin Marinas
2023-10-31 11:58 ` Catalin Marinas
2023-10-31 19:01 ` Trevor Gross
2023-10-31 19:01 ` Trevor Gross
2023-12-12 16:47 ` Will Deacon
2023-12-12 16:47 ` Will Deacon
2024-01-22 9:17 ` Trevor Gross
2024-01-22 9:17 ` Trevor Gross
2024-01-25 3:19 ` WANG Rui
2024-01-25 3:19 ` WANG Rui
2024-01-26 19:37 ` Masahiro Yamada
2024-01-26 19:37 ` Masahiro Yamada
2024-01-27 5:08 ` WANG Rui
2024-01-27 5:08 ` WANG Rui
2024-01-27 17:31 ` Miguel Ojeda
2024-01-27 17:31 ` Miguel Ojeda
2024-01-22 9:29 ` Alice Ryhl
2024-01-22 9:29 ` Alice Ryhl
2024-01-24 9:12 ` Masahiro Yamada
2024-01-24 9:12 ` Masahiro Yamada
2023-10-20 15:50 ` [PATCH v4 2/2] arm64: rust: Enable Rust support for AArch64 Jamie Cunliffe
2023-10-20 15:50 ` Jamie Cunliffe
2023-10-20 16:45 ` Catalin Marinas
2023-10-20 16:45 ` Catalin Marinas
2023-10-21 13:40 ` Miguel Ojeda
2023-10-21 13:40 ` Miguel Ojeda
2023-10-22 10:48 ` Catalin Marinas
2023-10-22 10:48 ` Catalin Marinas
2023-10-22 12:14 ` Miguel Ojeda
2023-10-22 12:14 ` Miguel Ojeda
2023-10-20 17:21 ` Andrew Lunn
2023-10-20 17:21 ` Andrew Lunn
2023-10-20 18:33 ` Boqun Feng [this message]
2023-10-20 18:33 ` Boqun Feng
2023-10-20 18:47 ` Andrew Lunn
2023-10-20 18:47 ` Andrew Lunn
2023-10-21 12:50 ` Alice Ryhl
2023-10-21 12:50 ` Alice Ryhl
2023-10-21 13:41 ` Miguel Ojeda
2023-10-21 13:41 ` Miguel Ojeda
2023-10-21 16:03 ` Andrew Lunn
2023-10-21 16:03 ` Andrew Lunn
2023-10-22 12:57 ` Miguel Ojeda
2023-10-22 12:57 ` Miguel Ojeda
2023-10-24 0:57 ` Stephen Boyd
2023-10-24 0:57 ` Stephen Boyd
2023-10-25 23:55 ` Boqun Feng
2023-10-25 23:55 ` Boqun Feng
2023-11-01 15:04 ` Linus Walleij
2023-11-01 15:04 ` Linus Walleij
2023-10-31 18:31 ` Matthew Maurer
2023-10-31 18:31 ` Matthew Maurer
2023-11-28 18:29 ` Boqun Feng
2023-11-28 18:29 ` Boqun Feng
2023-12-13 19:00 ` Miguel Ojeda
2023-12-13 19:00 ` Miguel Ojeda
2024-01-22 2:01 ` Fabien Parent
2024-01-22 2:01 ` Fabien Parent
2024-01-22 5:27 ` Behme Dirk (CM/ESO2)
2024-01-22 5:27 ` Behme Dirk (CM/ESO2)
2024-01-22 9:30 ` Alice Ryhl
2024-01-22 9:30 ` Alice Ryhl
2024-02-09 17:38 ` [PATCH v4 0/2] Rust enablement " Catalin Marinas
2024-02-09 17:38 ` Catalin Marinas
2024-02-09 21:41 ` Miguel Ojeda
2024-02-09 21:41 ` Miguel Ojeda
-- strict thread matches above, loose matches on Subject: below --
2023-10-24 14:17 [PATCH v4 2/2] arm64: rust: Enable Rust support " Pratham Patel
2023-10-24 15:19 ` Miguel Ojeda
2023-10-24 15:19 ` Miguel Ojeda
2023-10-25 2:01 ` Pratham Patel
2023-10-25 2:01 ` Pratham Patel
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=ZTLH5o0GlFBYsAHq@boqun-archlinux \
--to=boqun.feng@gmail.com \
--cc=Jamie.Cunliffe@arm.com \
--cc=andrew@lunn.ch \
--cc=catalin.marinas@arm.com \
--cc=lina@asahilina.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=sboyd@kernel.org \
--cc=steve.capper@arm.com \
--cc=will@kernel.org \
/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.