public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds
@ 2025-12-30 16:47 Asuna Yang
  2025-12-30 16:47 ` [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile Asuna Yang
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Asuna Yang @ 2025-12-30 16:47 UTC (permalink / raw)
  To: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon
  Cc: linux-kbuild, linux-kernel, rust-for-linux, llvm, linux-riscv,
	linux-doc, Asuna Yang

Previous v5 patch:
https://lore.kernel.org/20251204-gcc-rust-v5-v5-0-2d4f20d86c24@gmail.com

Changes in v6:
- Simplified `bindgen-backend-option` Kconfig function by using
`/dev/null` with clang option `-x c` instead of `touch`ing a new temp
file.
- Moved the `BINDGEN_TARGET` check to `rust/Makefile` so it only
performs the check when Rust is enabled, avoiding breaking targets that
do not support Rust builds.
- Updated my git email to the institutional email address.

Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
---
Asuna Yang (4):
      rust: export BINDGEN_TARGET from a separate Makefile
      rust: generate a fatal error if BINDGEN_TARGET is undefined
      rust: add a Kconfig function to test for support of bindgen options
      RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds

 Documentation/rust/arch-support.rst |  2 +-
 Makefile                            |  3 ++-
 arch/riscv/Kconfig                  | 35 ++++++++++++++++++++++++++++++++++-
 rust/Makefile                       | 17 ++++++++---------
 scripts/Kconfig.include             |  5 +++++
 scripts/Makefile.rust               | 10 ++++++++++
 6 files changed, 60 insertions(+), 12 deletions(-)
---
base-commit: 8640b74557fc8b4c300030f6ccb8cd078f665ec8
change-id: 20251204-gcc-rust-v5-aafcede31ea3

Best regards,
-- 
Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile
  2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
@ 2025-12-30 16:47 ` Asuna Yang
  2026-01-29 22:35   ` Nathan Chancellor
  2025-12-30 16:47 ` [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined Asuna Yang
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Asuna Yang @ 2025-12-30 16:47 UTC (permalink / raw)
  To: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon
  Cc: linux-kbuild, linux-kernel, rust-for-linux, llvm, linux-riscv,
	linux-doc, Asuna Yang

A subsequent commit will add a new function `bindgen-option` to
`scripts/Kconfig.include`. The bindgen backend requires the `--target`
option for cross compiling, but variable `BINDGEN_TARGET` in
`rust/Makefile` cannot be exported to `scripts/Kconfig.include`.

Therefore, move this variable to a separate new `Makefile.rust` file and
include it from `scripts/Makefile` to make the exported variable
available for use in Kconfig. Place the include in the `need-compiler`
branch to avoid including it in irrelevant make targets.

Since the new file name is `Makefile.rust`, it matches an existing
MAINTAINERS rule `scripts/*rust*`, so no modification to the MAINTAINERS
file is needed.

Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
---
 Makefile              | 3 ++-
 rust/Makefile         | 8 --------
 scripts/Makefile.rust | 9 +++++++++
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/Makefile b/Makefile
index 27ce077520fe..9754d7add947 100644
--- a/Makefile
+++ b/Makefile
@@ -718,9 +718,10 @@ ifneq ($(findstring clang,$(CC_VERSION_TEXT)),)
 include $(srctree)/scripts/Makefile.clang
 endif
 
+ifdef need-compiler
+include $(srctree)/scripts/Makefile.rust
 # Include this also for config targets because some architectures need
 # cc-cross-prefix to determine CROSS_COMPILE.
-ifdef need-compiler
 include $(srctree)/scripts/Makefile.compiler
 endif
 
diff --git a/rust/Makefile b/rust/Makefile
index 5d357dce1704..2603b34f9833 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -385,14 +385,6 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
 	-fzero-init-padding-bits=% -mno-fdpic \
 	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference
 
-# Derived from `scripts/Makefile.clang`.
-BINDGEN_TARGET_x86	:= x86_64-linux-gnu
-BINDGEN_TARGET_arm64	:= aarch64-linux-gnu
-BINDGEN_TARGET_arm	:= arm-linux-gnueabi
-BINDGEN_TARGET_loongarch	:= loongarch64-linux-gnusf
-BINDGEN_TARGET_um	:= $(BINDGEN_TARGET_$(SUBARCH))
-BINDGEN_TARGET		:= $(BINDGEN_TARGET_$(SRCARCH))
-
 # All warnings are inhibited since GCC builds are very experimental,
 # many GCC warnings are not supported by Clang, they may only appear in
 # some configurations, with new GCC versions, etc.
diff --git a/scripts/Makefile.rust b/scripts/Makefile.rust
new file mode 100644
index 000000000000..5c12b4b8c8b6
--- /dev/null
+++ b/scripts/Makefile.rust
@@ -0,0 +1,9 @@
+# Derived from `scripts/Makefile.clang`.
+BINDGEN_TARGET_x86	:= x86_64-linux-gnu
+BINDGEN_TARGET_arm64	:= aarch64-linux-gnu
+BINDGEN_TARGET_arm	:= arm-linux-gnueabi
+BINDGEN_TARGET_loongarch	:= loongarch64-linux-gnusf
+BINDGEN_TARGET_um	:= $(BINDGEN_TARGET_$(SUBARCH))
+BINDGEN_TARGET		:= $(BINDGEN_TARGET_$(SRCARCH))
+
+export BINDGEN_TARGET

-- 
2.51.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined
  2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
  2025-12-30 16:47 ` [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile Asuna Yang
@ 2025-12-30 16:47 ` Asuna Yang
  2026-01-29 22:40   ` Nathan Chancellor
  2025-12-30 16:47 ` [PATCH v6 3/4] rust: add a Kconfig function to test for support of bindgen options Asuna Yang
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Asuna Yang @ 2025-12-30 16:47 UTC (permalink / raw)
  To: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon
  Cc: linux-kbuild, linux-kernel, rust-for-linux, llvm, linux-riscv,
	linux-doc, Asuna Yang

Generate a friendly fatal error if the target triplet is undefined for
bindgen, rather than having the compiler generate obscure error messages
during the build stage.

`BINDGEN_TARGET` is actually defined in `scripts/Makefile.rust`, but the
file is included regardless of whether Rust is enabled, so perform this
check in `rust/Makefile` to avoid breaking targets that do not yet
support Rust builds.

This piece of code is copied from `scripts/Makefile.clang`.

Before this commit, error messages might look like:

error: unknown argument: '-mno-riscv-attribute'
error: unsupported argument 'medany' to option '-mcmodel=' for target
'unknown'
error: unsupported option '-march=' for target ''
error: unsupported option '-mno-save-restore' for target ''
error: unknown target triple 'unknown'
panicked at bindgen/ir/context.rs:562:15:
libclang error; possible causes include:
- Invalid flag syntax
- Unrecognized flags
- Invalid flag arguments
- File I/O errors
- Host vs. target architecture mismatch

Acked-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
---
 rust/Makefile | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/rust/Makefile b/rust/Makefile
index 2603b34f9833..37b4205afb70 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -385,6 +385,12 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
 	-fzero-init-padding-bits=% -mno-fdpic \
 	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference
 
+# Because scripts/Makefile.rust is included regardless of whether Rust is enabled,
+# we perform this check here to avoid breaking targets that do not yet support Rust builds.
+ifeq ($(BINDGEN_TARGET),)
+$(error add '--target=' option to scripts/Makefile.rust)
+endif
+
 # All warnings are inhibited since GCC builds are very experimental,
 # many GCC warnings are not supported by Clang, they may only appear in
 # some configurations, with new GCC versions, etc.

-- 
2.51.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v6 3/4] rust: add a Kconfig function to test for support of bindgen options
  2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
  2025-12-30 16:47 ` [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile Asuna Yang
  2025-12-30 16:47 ` [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined Asuna Yang
@ 2025-12-30 16:47 ` Asuna Yang
  2026-01-29 22:41   ` Nathan Chancellor
  2025-12-30 16:47 ` [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds Asuna Yang
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Asuna Yang @ 2025-12-30 16:47 UTC (permalink / raw)
  To: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon
  Cc: linux-kbuild, linux-kernel, rust-for-linux, llvm, linux-riscv,
	linux-doc, Asuna Yang

Add a new `bindgen-backend-option` Kconfig function to test whether the
bindgen backend supports a given flag.

A subsequent commit will use this function to test for RISC-V extension
flags.

Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
---
 scripts/Kconfig.include | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
index d42042b6c9e2..9954b8093fab 100644
--- a/scripts/Kconfig.include
+++ b/scripts/Kconfig.include
@@ -78,3 +78,8 @@ rustc-llvm-version := $(shell,$(srctree)/scripts/rustc-llvm-version.sh $(RUSTC))
 # If you are testing for unstable features, consider testing RUSTC_VERSION
 # instead, as features may have different completeness while available.
 rustc-option = $(success,trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(RUSTC) $(1) --crate-type=rlib /dev/null --out-dir=.tmp_$$ -o .tmp_$$/tmp.rlib)
+
+# $(bindgen-backend-option,<flag>)
+# Return y if bindgen backend supports <flag>, n otherwise
+# For now, the backend refers only to libclang, so more specifically, this function tests whether the given flag is recognized by the libclang used by bindgen.
+bindgen-backend-option = $(success,$(BINDGEN) /dev/null -- -x c --target=$(BINDGEN_TARGET) $(1))

-- 
2.51.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds
  2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
                   ` (2 preceding siblings ...)
  2025-12-30 16:47 ` [PATCH v6 3/4] rust: add a Kconfig function to test for support of bindgen options Asuna Yang
@ 2025-12-30 16:47 ` Asuna Yang
  2026-01-29 13:49   ` Charalampos Mitrodimas
  2025-12-30 16:58 ` [PATCH v6 0/4] RISC-V: " Asuna Yang
  2026-01-22  7:20 ` Asuna Yang
  5 siblings, 1 reply; 17+ messages in thread
From: Asuna Yang @ 2025-12-30 16:47 UTC (permalink / raw)
  To: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon
  Cc: linux-kbuild, linux-kernel, rust-for-linux, llvm, linux-riscv,
	linux-doc, Asuna Yang

Commit 33549fcf37ec ("RISC-V: disallow gcc + rust builds") disabled GCC
+ Rust builds for RISC-V due to differences in extension handling
compared to LLVM. This commit enables GCC + Rust builds again.

Add `bindgen-option` conditions for the availability of libclang to the
RISC-V extension Kconfig symbols that depend on the `cc-option`
function.

For Zicsr/Zifencei special handling, since LLVM/Clang always enables
these two extensions, either don't pass them to `-march`, or pass them
explicitly and Rust bindgen libclang must recognize them.

Clang does not support `-mno-riscv-attribute` flag, filter it out to
resolve error: unknown argument: '-mno-riscv-attribute'.

Define `BINDGEN_TARGET_riscv` to pass the target triplet to Rust bindgen
libclang for RISC-V to resolve error: unsupported argument 'medany' to
option '-mcmodel=' for target 'unknown'.

Update the documentation, GCC + Rust builds for RISC-V are now
maintained.

Acked-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
---
 Documentation/rust/arch-support.rst |  2 +-
 arch/riscv/Kconfig                  | 35 ++++++++++++++++++++++++++++++++++-
 rust/Makefile                       |  3 ++-
 scripts/Makefile.rust               |  1 +
 4 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst
index 6e6a515d0899..5282e0e174e8 100644
--- a/Documentation/rust/arch-support.rst
+++ b/Documentation/rust/arch-support.rst
@@ -18,7 +18,7 @@ Architecture   Level of support  Constraints
 ``arm``        Maintained        ARMv7 Little Endian only.
 ``arm64``      Maintained        Little Endian only.
 ``loongarch``  Maintained        \-
-``riscv``      Maintained        ``riscv64`` and LLVM/Clang only.
+``riscv``      Maintained        ``riscv64`` only.
 ``um``         Maintained        \-
 ``x86``        Maintained        ``x86_64`` only.
 =============  ================  ==============================================
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 6b39f37f769a..c869ee07117e 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -195,7 +195,7 @@ config RISCV
 	select HAVE_REGS_AND_STACK_ACCESS_API
 	select HAVE_RETHOOK if !XIP_KERNEL
 	select HAVE_RSEQ
-	select HAVE_RUST if RUSTC_SUPPORTS_RISCV && CC_IS_CLANG
+	select HAVE_RUST if RUSTC_SUPPORTS_RISCV && TOOLCHAIN_MATCHES_ZICSR_ZIFENCEI
 	select HAVE_SAMPLE_FTRACE_DIRECT
 	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
 	select HAVE_STACKPROTECTOR
@@ -619,6 +619,8 @@ config TOOLCHAIN_HAS_V
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32imv)
 	depends on LD_IS_LLD || LD_VERSION >= 23800
 	depends on AS_HAS_OPTION_ARCH
+	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64imv)
+	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32imv)
 
 config RISCV_ISA_V
 	bool "Vector extension support"
@@ -683,6 +685,8 @@ config TOOLCHAIN_HAS_ZABHA
 	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zabha)
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zabha)
 	depends on AS_HAS_OPTION_ARCH
+	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zabha)
+	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zabha)
 
 config RISCV_ISA_ZABHA
 	bool "Zabha extension support for atomic byte/halfword operations"
@@ -701,6 +705,8 @@ config TOOLCHAIN_HAS_ZACAS
 	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zacas)
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zacas)
 	depends on AS_HAS_OPTION_ARCH
+	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zacas)
+	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zacas)
 
 config RISCV_ISA_ZACAS
 	bool "Zacas extension support for atomic CAS"
@@ -719,6 +725,8 @@ config TOOLCHAIN_HAS_ZBB
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb)
 	depends on LD_IS_LLD || LD_VERSION >= 23900
 	depends on AS_HAS_OPTION_ARCH
+	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zbb)
+	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zbb)
 
 # This symbol indicates that the toolchain supports all v1.0 vector crypto
 # extensions, including Zvk*, Zvbb, and Zvbc.  LLVM added all of these at once.
@@ -734,6 +742,8 @@ config TOOLCHAIN_HAS_ZBA
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zba)
 	depends on LD_IS_LLD || LD_VERSION >= 23900
 	depends on AS_HAS_OPTION_ARCH
+	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zba)
+	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zba)
 
 config RISCV_ISA_ZBA
 	bool "Zba extension support for bit manipulation instructions"
@@ -769,6 +779,8 @@ config TOOLCHAIN_HAS_ZBC
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbc)
 	depends on LD_IS_LLD || LD_VERSION >= 23900
 	depends on AS_HAS_OPTION_ARCH
+	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zbc)
+	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zbc)
 
 config RISCV_ISA_ZBC
 	bool "Zbc extension support for carry-less multiplication instructions"
@@ -792,6 +804,8 @@ config TOOLCHAIN_HAS_ZBKB
 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbkb)
 	depends on LD_IS_LLD || LD_VERSION >= 23900
 	depends on AS_HAS_OPTION_ARCH
+	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zbkb)
+	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zbkb)
 
 config RISCV_ISA_ZBKB
 	bool "Zbkb extension support for bit manipulation instructions"
@@ -893,6 +907,25 @@ config TOOLCHAIN_NEEDS_OLD_ISA_SPEC
 	  versions of clang and GCC to be passed to GAS, which has the same result
 	  as passing zicsr and zifencei to -march.
 
+config RUST_BINDGEN_HAS_ZICSR_ZIFENCEI
+	def_bool y
+	depends on !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zicsr_zifencei)
+	depends on !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zicsr_zifencei)
+
+config TOOLCHAIN_MATCHES_ZICSR_ZIFENCEI
+	def_bool y
+	# https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16
+	depends on TOOLCHAIN_NEEDS_OLD_ISA_SPEC || !TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI || RUST_BINDGEN_HAS_ZICSR_ZIFENCEI
+	help
+	  LLVM/Clang >= 17.0.0 starts recognizing Zicsr/Zifencei in -march, passing
+	  them to -march doesn't generate an error anymore, and passing them or not
+	  doesn't have any real difference, it still follows ISA before version
+	  20190608 - Zicsr/Zifencei are included in base ISA.
+
+	  The current latest version of LLVM/Clang still does not require explicit
+	  Zicsr/Zifencei to enable these two extensions, Clang just accepts them in
+	  -march and then silently ignores them.
+
 config FPU
 	bool "FPU support"
 	default y
diff --git a/rust/Makefile b/rust/Makefile
index 37b4205afb70..d8b6a570cb84 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -383,7 +383,8 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
 	-fno-inline-functions-called-once -fsanitize=bounds-strict \
 	-fstrict-flex-arrays=% -fmin-function-alignment=% \
 	-fzero-init-padding-bits=% -mno-fdpic \
-	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference
+	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference \
+	-mno-riscv-attribute
 
 # Because scripts/Makefile.rust is included regardless of whether Rust is enabled,
 # we perform this check here to avoid breaking targets that do not yet support Rust builds.
diff --git a/scripts/Makefile.rust b/scripts/Makefile.rust
index 5c12b4b8c8b6..bfdad4a0a3ce 100644
--- a/scripts/Makefile.rust
+++ b/scripts/Makefile.rust
@@ -3,6 +3,7 @@ BINDGEN_TARGET_x86	:= x86_64-linux-gnu
 BINDGEN_TARGET_arm64	:= aarch64-linux-gnu
 BINDGEN_TARGET_arm	:= arm-linux-gnueabi
 BINDGEN_TARGET_loongarch	:= loongarch64-linux-gnusf
+BINDGEN_TARGET_riscv	:= riscv64-linux-gnu
 BINDGEN_TARGET_um	:= $(BINDGEN_TARGET_$(SUBARCH))
 BINDGEN_TARGET		:= $(BINDGEN_TARGET_$(SRCARCH))
 

-- 
2.51.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds
  2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
                   ` (3 preceding siblings ...)
  2025-12-30 16:47 ` [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds Asuna Yang
@ 2025-12-30 16:58 ` Asuna Yang
  2026-01-22  7:20 ` Asuna Yang
  5 siblings, 0 replies; 17+ messages in thread
From: Asuna Yang @ 2025-12-30 16:58 UTC (permalink / raw)
  To: xinrui.riscv
  Cc: a.hindborg, alex, aliceryhl, aou, bjorn3_gh, boqun.feng, conor,
	corbet, dakr, gary, jeffbai, jmontleo, justinstitt, linux-doc,
	linux-kbuild, linux-kernel, linux-riscv, llvm, lossin, morbo,
	nathan, nick.desaulniers+lkml, nsc, ojeda, palmer, pjw,
	rabenda.cn, rust-for-linux, tmgross, wangruikang

I am replying using my previous personal email address to cross-verify 
that <xinrui.riscv@isrc.iscas.ac.cn> is indeed my own.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds
  2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
                   ` (4 preceding siblings ...)
  2025-12-30 16:58 ` [PATCH v6 0/4] RISC-V: " Asuna Yang
@ 2026-01-22  7:20 ` Asuna Yang
  2026-01-24  7:47   ` Paul Walmsley
  5 siblings, 1 reply; 17+ messages in thread
From: Asuna Yang @ 2026-01-22  7:20 UTC (permalink / raw)
  To: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon
  Cc: linux-kbuild, linux-kernel, rust-for-linux, llvm, linux-riscv,
	linux-doc

Gently ping. I think this patch is ready for review. Is there anything 
else I need to do before merging?

Best regards,
Asuna Yang


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds
  2026-01-22  7:20 ` Asuna Yang
@ 2026-01-24  7:47   ` Paul Walmsley
  2026-01-29  9:30     ` Conor Dooley
  0 siblings, 1 reply; 17+ messages in thread
From: Paul Walmsley @ 2026-01-24  7:47 UTC (permalink / raw)
  To: Asuna Yang
  Cc: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon, linux-kbuild,
	linux-kernel, rust-for-linux, llvm, linux-riscv, linux-doc

Hi Asuna,

On Thu, 22 Jan 2026, Asuna Yang wrote:

> Gently ping. I think this patch is ready for review. Is there anything else I
> need to do before merging?

I guess this should probably go in via the arch/riscv tree?  If you agree, 
then from a maintenance point of view, it would be good to get some acks 
for the first and third patches from the relevant maintainers.


thanks,

- Paul

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds
  2026-01-24  7:47   ` Paul Walmsley
@ 2026-01-29  9:30     ` Conor Dooley
  0 siblings, 0 replies; 17+ messages in thread
From: Conor Dooley @ 2026-01-29  9:30 UTC (permalink / raw)
  To: Paul Walmsley
  Cc: Asuna Yang, Nathan Chancellor, Nicolas Schier, Miguel Ojeda,
	Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
	Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
	Nick Desaulniers, Bill Wendling, Justin Stitt, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Mingcong Bai,
	Han Gao, Vivian Wang, Jason Montleon, linux-kbuild, linux-kernel,
	rust-for-linux, llvm, linux-riscv, linux-doc

[-- Attachment #1: Type: text/plain, Size: 1053 bytes --]

On Sat, Jan 24, 2026 at 12:47:26AM -0700, Paul Walmsley wrote:
> Hi Asuna,
> 
> On Thu, 22 Jan 2026, Asuna Yang wrote:
> 
> > Gently ping. I think this patch is ready for review. Is there anything else I
> > need to do before merging?
> 
> I guess this should probably go in via the arch/riscv tree?  If you agree, 
> then from a maintenance point of view, it would be good to get some acks 
> for the first and third patches from the relevant maintainers.

Not a rust maintainer of course, but from a "I was involved in this and
haven't replied in a while to the versions" point of view:
Acked-by: Conor Dooley <conor.dooley@microchip.com>

I've just not had the time to test this and so I've been putting off
replying, but the idea is what I wanted to have done and I appreciate
the work done on it by Asuna, so I'm acking it now rather than stalling
until I can test and give an r-b. It's the right thing to do for a !gcc
point of view too in my opinion, even if the possible issues are
unlikely to manifest.

Cheers,
Conor.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds
  2025-12-30 16:47 ` [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds Asuna Yang
@ 2026-01-29 13:49   ` Charalampos Mitrodimas
  2026-01-29 23:25     ` Nathan Chancellor
  2026-02-06 12:13     ` Asuna Yang
  0 siblings, 2 replies; 17+ messages in thread
From: Charalampos Mitrodimas @ 2026-01-29 13:49 UTC (permalink / raw)
  To: Asuna Yang
  Cc: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon, linux-kbuild,
	linux-kernel, rust-for-linux, llvm, linux-riscv, linux-doc

Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn> writes:

> Commit 33549fcf37ec ("RISC-V: disallow gcc + rust builds") disabled GCC
> + Rust builds for RISC-V due to differences in extension handling
> compared to LLVM. This commit enables GCC + Rust builds again.
>
> Add `bindgen-option` conditions for the availability of libclang to the
> RISC-V extension Kconfig symbols that depend on the `cc-option`
> function.
>
> For Zicsr/Zifencei special handling, since LLVM/Clang always enables
> these two extensions, either don't pass them to `-march`, or pass them
> explicitly and Rust bindgen libclang must recognize them.
>
> Clang does not support `-mno-riscv-attribute` flag, filter it out to
> resolve error: unknown argument: '-mno-riscv-attribute'.
>
> Define `BINDGEN_TARGET_riscv` to pass the target triplet to Rust bindgen
> libclang for RISC-V to resolve error: unsupported argument 'medany' to
> option '-mcmodel=' for target 'unknown'.
>
> Update the documentation, GCC + Rust builds for RISC-V are now
> maintained.
>
> Acked-by: Miguel Ojeda <ojeda@kernel.org>
> Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
> ---
>  Documentation/rust/arch-support.rst |  2 +-
>  arch/riscv/Kconfig                  | 35 ++++++++++++++++++++++++++++++++++-
>  rust/Makefile                       |  3 ++-
>  scripts/Makefile.rust               |  1 +
>  4 files changed, 38 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst
> index 6e6a515d0899..5282e0e174e8 100644
> --- a/Documentation/rust/arch-support.rst
> +++ b/Documentation/rust/arch-support.rst
> @@ -18,7 +18,7 @@ Architecture   Level of support  Constraints
>  ``arm``        Maintained        ARMv7 Little Endian only.
>  ``arm64``      Maintained        Little Endian only.
>  ``loongarch``  Maintained        \-
> -``riscv``      Maintained        ``riscv64`` and LLVM/Clang only.
> +``riscv``      Maintained        ``riscv64`` only.
>  ``um``         Maintained        \-
>  ``x86``        Maintained        ``x86_64`` only.
>  =============  ================  ==============================================
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 6b39f37f769a..c869ee07117e 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -195,7 +195,7 @@ config RISCV
>  	select HAVE_REGS_AND_STACK_ACCESS_API
>  	select HAVE_RETHOOK if !XIP_KERNEL
>  	select HAVE_RSEQ
> -	select HAVE_RUST if RUSTC_SUPPORTS_RISCV && CC_IS_CLANG
> +	select HAVE_RUST if RUSTC_SUPPORTS_RISCV && TOOLCHAIN_MATCHES_ZICSR_ZIFENCEI
>  	select HAVE_SAMPLE_FTRACE_DIRECT
>  	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
>  	select HAVE_STACKPROTECTOR
> @@ -619,6 +619,8 @@ config TOOLCHAIN_HAS_V
>  	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32imv)
>  	depends on LD_IS_LLD || LD_VERSION >= 23800
>  	depends on AS_HAS_OPTION_ARCH
> +	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64imv)
> +	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32imv)

Hi Asuna!

I'm under the impression that the `!RUST ||` guard here doesn't
actually prevent the `$(bindgen-backend-option,...)` call from being
executed. `$(...)` shell expansions should happen during the textual
substitution phase, before symbol dependency evaluation occurs, check
documentation at kconfig-macro-language.rst lines 228-229.

I did this test:
  $ cat /tmp/fake_bindgen
    #!/bin/bash
    echo "[BINDGEN INVOKED] $(date '+%H:%M:%S') args: $@" >> /tmp/bindgen_calls.log
    # Call real bindgen
    exec /home/charmitro/.cargo/bin/bindgen "$@"

  $ make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- BINDGEN=/tmp/fake_bindgen defconfig
    HOSTCC  scripts/basic/fixdep
    ...
  *** Default configuration is based on 'defconfig'
  #
  # configuration written to .config
  #

  $ linux git:(master) rg CONFIG_RUST .config
  ...
  283:# CONFIG_RUST is not set
  ...

  $ cat /tmp/bindgen_calls.log
  [BINDGEN INVOKED] 15:44:44 args: --version workaround-for-0.69.0
  [BINDGEN INVOKED] 15:44:44 args: ./scripts/rust_is_available_bindgen_libclang.h
  [BINDGEN INVOKED] 15:44:44 args: --version workaround-for-0.69.0
  [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64imv
  [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32imv
  [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zabha
  [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zabha
  [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zacas
  [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zacas
  [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbb
  [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbb
  [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zba
  [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zba
  [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbc
  [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbc
  [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbkb
  [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbkb
  [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zicsr_zifencei
  [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zicsr_zifencei

So, CONFIG_RUST not set, yet bindgen was invoked. Not sure if that is
intentional though.


Cheers,
C. Mitrodimas

>  
>  config RISCV_ISA_V
>  	bool "Vector extension support"
> @@ -683,6 +685,8 @@ config TOOLCHAIN_HAS_ZABHA
>  	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zabha)
>  	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zabha)
>  	depends on AS_HAS_OPTION_ARCH
> +	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zabha)
> +	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zabha)
>  
>  config RISCV_ISA_ZABHA
>  	bool "Zabha extension support for atomic byte/halfword operations"
> @@ -701,6 +705,8 @@ config TOOLCHAIN_HAS_ZACAS
>  	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zacas)
>  	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zacas)
>  	depends on AS_HAS_OPTION_ARCH
> +	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zacas)
> +	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zacas)
>  
>  config RISCV_ISA_ZACAS
>  	bool "Zacas extension support for atomic CAS"
> @@ -719,6 +725,8 @@ config TOOLCHAIN_HAS_ZBB
>  	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbb)
>  	depends on LD_IS_LLD || LD_VERSION >= 23900
>  	depends on AS_HAS_OPTION_ARCH
> +	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zbb)
> +	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zbb)
>  
>  # This symbol indicates that the toolchain supports all v1.0 vector crypto
>  # extensions, including Zvk*, Zvbb, and Zvbc.  LLVM added all of these at once.
> @@ -734,6 +742,8 @@ config TOOLCHAIN_HAS_ZBA
>  	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zba)
>  	depends on LD_IS_LLD || LD_VERSION >= 23900
>  	depends on AS_HAS_OPTION_ARCH
> +	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zba)
> +	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zba)
>  
>  config RISCV_ISA_ZBA
>  	bool "Zba extension support for bit manipulation instructions"
> @@ -769,6 +779,8 @@ config TOOLCHAIN_HAS_ZBC
>  	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbc)
>  	depends on LD_IS_LLD || LD_VERSION >= 23900
>  	depends on AS_HAS_OPTION_ARCH
> +	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zbc)
> +	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zbc)
>  
>  config RISCV_ISA_ZBC
>  	bool "Zbc extension support for carry-less multiplication instructions"
> @@ -792,6 +804,8 @@ config TOOLCHAIN_HAS_ZBKB
>  	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zbkb)
>  	depends on LD_IS_LLD || LD_VERSION >= 23900
>  	depends on AS_HAS_OPTION_ARCH
> +	depends on !RUST || !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zbkb)
> +	depends on !RUST || !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zbkb)
>  
>  config RISCV_ISA_ZBKB
>  	bool "Zbkb extension support for bit manipulation instructions"
> @@ -893,6 +907,25 @@ config TOOLCHAIN_NEEDS_OLD_ISA_SPEC
>  	  versions of clang and GCC to be passed to GAS, which has the same result
>  	  as passing zicsr and zifencei to -march.
>  
> +config RUST_BINDGEN_HAS_ZICSR_ZIFENCEI
> +	def_bool y
> +	depends on !64BIT || $(bindgen-backend-option,-mabi=lp64 -march=rv64ima_zicsr_zifencei)
> +	depends on !32BIT || $(bindgen-backend-option,-mabi=ilp32 -march=rv32ima_zicsr_zifencei)
> +
> +config TOOLCHAIN_MATCHES_ZICSR_ZIFENCEI
> +	def_bool y
> +	# https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16
> +	depends on TOOLCHAIN_NEEDS_OLD_ISA_SPEC || !TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI || RUST_BINDGEN_HAS_ZICSR_ZIFENCEI
> +	help
> +	  LLVM/Clang >= 17.0.0 starts recognizing Zicsr/Zifencei in -march, passing
> +	  them to -march doesn't generate an error anymore, and passing them or not
> +	  doesn't have any real difference, it still follows ISA before version
> +	  20190608 - Zicsr/Zifencei are included in base ISA.
> +
> +	  The current latest version of LLVM/Clang still does not require explicit
> +	  Zicsr/Zifencei to enable these two extensions, Clang just accepts them in
> +	  -march and then silently ignores them.
> +
>  config FPU
>  	bool "FPU support"
>  	default y
> diff --git a/rust/Makefile b/rust/Makefile
> index 37b4205afb70..d8b6a570cb84 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -383,7 +383,8 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
>  	-fno-inline-functions-called-once -fsanitize=bounds-strict \
>  	-fstrict-flex-arrays=% -fmin-function-alignment=% \
>  	-fzero-init-padding-bits=% -mno-fdpic \
> -	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference
> +	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference \
> +	-mno-riscv-attribute
>  
>  # Because scripts/Makefile.rust is included regardless of whether Rust is enabled,
>  # we perform this check here to avoid breaking targets that do not yet support Rust builds.
> diff --git a/scripts/Makefile.rust b/scripts/Makefile.rust
> index 5c12b4b8c8b6..bfdad4a0a3ce 100644
> --- a/scripts/Makefile.rust
> +++ b/scripts/Makefile.rust
> @@ -3,6 +3,7 @@ BINDGEN_TARGET_x86	:= x86_64-linux-gnu
>  BINDGEN_TARGET_arm64	:= aarch64-linux-gnu
>  BINDGEN_TARGET_arm	:= arm-linux-gnueabi
>  BINDGEN_TARGET_loongarch	:= loongarch64-linux-gnusf
> +BINDGEN_TARGET_riscv	:= riscv64-linux-gnu
>  BINDGEN_TARGET_um	:= $(BINDGEN_TARGET_$(SUBARCH))
>  BINDGEN_TARGET		:= $(BINDGEN_TARGET_$(SRCARCH))

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile
  2025-12-30 16:47 ` [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile Asuna Yang
@ 2026-01-29 22:35   ` Nathan Chancellor
  0 siblings, 0 replies; 17+ messages in thread
From: Nathan Chancellor @ 2026-01-29 22:35 UTC (permalink / raw)
  To: Asuna Yang
  Cc: Nicolas Schier, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Nick Desaulniers, Bill Wendling,
	Justin Stitt, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Jonathan Corbet, Conor Dooley, Mingcong Bai,
	Han Gao, Vivian Wang, Jason Montleon, linux-kbuild, linux-kernel,
	rust-for-linux, llvm, linux-riscv, linux-doc

On Tue, Dec 30, 2025 at 05:47:54PM +0100, Asuna Yang wrote:
> A subsequent commit will add a new function `bindgen-option` to
> `scripts/Kconfig.include`. The bindgen backend requires the `--target`
> option for cross compiling, but variable `BINDGEN_TARGET` in
> `rust/Makefile` cannot be exported to `scripts/Kconfig.include`.
> 
> Therefore, move this variable to a separate new `Makefile.rust` file and
> include it from `scripts/Makefile` to make the exported variable
> available for use in Kconfig. Place the include in the `need-compiler`
> branch to avoid including it in irrelevant make targets.
> 
> Since the new file name is `Makefile.rust`, it matches an existing
> MAINTAINERS rule `scripts/*rust*`, so no modification to the MAINTAINERS
> file is needed.
> 
> Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>

Acked-by: Nathan Chancellor <nathan@kernel.org>

> ---
>  Makefile              | 3 ++-
>  rust/Makefile         | 8 --------
>  scripts/Makefile.rust | 9 +++++++++
>  3 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 27ce077520fe..9754d7add947 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -718,9 +718,10 @@ ifneq ($(findstring clang,$(CC_VERSION_TEXT)),)
>  include $(srctree)/scripts/Makefile.clang
>  endif
>  
> +ifdef need-compiler
> +include $(srctree)/scripts/Makefile.rust
>  # Include this also for config targets because some architectures need
>  # cc-cross-prefix to determine CROSS_COMPILE.
> -ifdef need-compiler
>  include $(srctree)/scripts/Makefile.compiler

Not that it is a big deal but it would make the diff simpler if the Rust
makefile was added after the compiler one, both for alphabetical reasons
and it would not necessitate moving the comment (even if it mostly
applies just to the compiler include).

>  endif
>  
> diff --git a/rust/Makefile b/rust/Makefile
> index 5d357dce1704..2603b34f9833 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -385,14 +385,6 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
>  	-fzero-init-padding-bits=% -mno-fdpic \
>  	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference
>  
> -# Derived from `scripts/Makefile.clang`.
> -BINDGEN_TARGET_x86	:= x86_64-linux-gnu
> -BINDGEN_TARGET_arm64	:= aarch64-linux-gnu
> -BINDGEN_TARGET_arm	:= arm-linux-gnueabi
> -BINDGEN_TARGET_loongarch	:= loongarch64-linux-gnusf
> -BINDGEN_TARGET_um	:= $(BINDGEN_TARGET_$(SUBARCH))
> -BINDGEN_TARGET		:= $(BINDGEN_TARGET_$(SRCARCH))
> -
>  # All warnings are inhibited since GCC builds are very experimental,
>  # many GCC warnings are not supported by Clang, they may only appear in
>  # some configurations, with new GCC versions, etc.
> diff --git a/scripts/Makefile.rust b/scripts/Makefile.rust
> new file mode 100644
> index 000000000000..5c12b4b8c8b6
> --- /dev/null
> +++ b/scripts/Makefile.rust
> @@ -0,0 +1,9 @@
> +# Derived from `scripts/Makefile.clang`.
> +BINDGEN_TARGET_x86	:= x86_64-linux-gnu
> +BINDGEN_TARGET_arm64	:= aarch64-linux-gnu
> +BINDGEN_TARGET_arm	:= arm-linux-gnueabi
> +BINDGEN_TARGET_loongarch	:= loongarch64-linux-gnusf
> +BINDGEN_TARGET_um	:= $(BINDGEN_TARGET_$(SUBARCH))
> +BINDGEN_TARGET		:= $(BINDGEN_TARGET_$(SRCARCH))
> +
> +export BINDGEN_TARGET
> 
> -- 
> 2.51.1
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined
  2025-12-30 16:47 ` [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined Asuna Yang
@ 2026-01-29 22:40   ` Nathan Chancellor
  2026-02-06 12:41     ` Asuna Yang
  0 siblings, 1 reply; 17+ messages in thread
From: Nathan Chancellor @ 2026-01-29 22:40 UTC (permalink / raw)
  To: Asuna Yang
  Cc: Nicolas Schier, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Nick Desaulniers, Bill Wendling,
	Justin Stitt, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Jonathan Corbet, Conor Dooley, Mingcong Bai,
	Han Gao, Vivian Wang, Jason Montleon, linux-kbuild, linux-kernel,
	rust-for-linux, llvm, linux-riscv, linux-doc

On Tue, Dec 30, 2025 at 05:47:55PM +0100, Asuna Yang wrote:
> Generate a friendly fatal error if the target triplet is undefined for
> bindgen, rather than having the compiler generate obscure error messages
> during the build stage.
> 
> `BINDGEN_TARGET` is actually defined in `scripts/Makefile.rust`, but the
> file is included regardless of whether Rust is enabled, so perform this
> check in `rust/Makefile` to avoid breaking targets that do not yet
> support Rust builds.
> 
> This piece of code is copied from `scripts/Makefile.clang`.
> 
> Before this commit, error messages might look like:
> 
> error: unknown argument: '-mno-riscv-attribute'
> error: unsupported argument 'medany' to option '-mcmodel=' for target
> 'unknown'
> error: unsupported option '-march=' for target ''
> error: unsupported option '-mno-save-restore' for target ''
> error: unknown target triple 'unknown'
> panicked at bindgen/ir/context.rs:562:15:
> libclang error; possible causes include:
> - Invalid flag syntax
> - Unrecognized flags
> - Invalid flag arguments
> - File I/O errors
> - Host vs. target architecture mismatch
> 
> Acked-by: Miguel Ojeda <ojeda@kernel.org>
> Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
> ---
>  rust/Makefile | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/rust/Makefile b/rust/Makefile
> index 2603b34f9833..37b4205afb70 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -385,6 +385,12 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
>  	-fzero-init-padding-bits=% -mno-fdpic \
>  	--param=% --param asan-% -fno-isolate-erroneous-paths-dereference
>  
> +# Because scripts/Makefile.rust is included regardless of whether Rust is enabled,
> +# we perform this check here to avoid breaking targets that do not yet support Rust builds.

This might read a little better if it were

  scripts/Makefile.rust is included ..., so we perform ...

instead of

  Because ..., we perform ...

or at the very least reversing the phrases

  We perform ... because ...

But that could just be personal preference.

> +ifeq ($(BINDGEN_TARGET),)
> +$(error add '--target=' option to scripts/Makefile.rust)
> +endif
> +
>  # All warnings are inhibited since GCC builds are very experimental,
>  # many GCC warnings are not supported by Clang, they may only appear in
>  # some configurations, with new GCC versions, etc.
> 
> -- 
> 2.51.1
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 3/4] rust: add a Kconfig function to test for support of bindgen options
  2025-12-30 16:47 ` [PATCH v6 3/4] rust: add a Kconfig function to test for support of bindgen options Asuna Yang
@ 2026-01-29 22:41   ` Nathan Chancellor
  0 siblings, 0 replies; 17+ messages in thread
From: Nathan Chancellor @ 2026-01-29 22:41 UTC (permalink / raw)
  To: Asuna Yang
  Cc: Nicolas Schier, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Nick Desaulniers, Bill Wendling,
	Justin Stitt, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Jonathan Corbet, Conor Dooley, Mingcong Bai,
	Han Gao, Vivian Wang, Jason Montleon, linux-kbuild, linux-kernel,
	rust-for-linux, llvm, linux-riscv, linux-doc

On Tue, Dec 30, 2025 at 05:47:56PM +0100, Asuna Yang wrote:
> Add a new `bindgen-backend-option` Kconfig function to test whether the
> bindgen backend supports a given flag.
> 
> A subsequent commit will use this function to test for RISC-V extension
> flags.
> 
> Signed-off-by: Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn>
> ---

Acked-by: Nathan Chancellor <nathan@kernel.org>

>  scripts/Kconfig.include | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include
> index d42042b6c9e2..9954b8093fab 100644
> --- a/scripts/Kconfig.include
> +++ b/scripts/Kconfig.include
> @@ -78,3 +78,8 @@ rustc-llvm-version := $(shell,$(srctree)/scripts/rustc-llvm-version.sh $(RUSTC))
>  # If you are testing for unstable features, consider testing RUSTC_VERSION
>  # instead, as features may have different completeness while available.
>  rustc-option = $(success,trap "rm -rf .tmp_$$" EXIT; mkdir .tmp_$$; $(RUSTC) $(1) --crate-type=rlib /dev/null --out-dir=.tmp_$$ -o .tmp_$$/tmp.rlib)
> +
> +# $(bindgen-backend-option,<flag>)
> +# Return y if bindgen backend supports <flag>, n otherwise
> +# For now, the backend refers only to libclang, so more specifically, this function tests whether the given flag is recognized by the libclang used by bindgen.
> +bindgen-backend-option = $(success,$(BINDGEN) /dev/null -- -x c --target=$(BINDGEN_TARGET) $(1))
> 
> -- 
> 2.51.1
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds
  2026-01-29 13:49   ` Charalampos Mitrodimas
@ 2026-01-29 23:25     ` Nathan Chancellor
  2026-02-06 12:13     ` Asuna Yang
  1 sibling, 0 replies; 17+ messages in thread
From: Nathan Chancellor @ 2026-01-29 23:25 UTC (permalink / raw)
  To: Charalampos Mitrodimas
  Cc: Asuna Yang, Nicolas Schier, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Nick Desaulniers, Bill Wendling,
	Justin Stitt, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Jonathan Corbet, Conor Dooley, Mingcong Bai,
	Han Gao, Vivian Wang, Jason Montleon, linux-kbuild, linux-kernel,
	rust-for-linux, llvm, linux-riscv, linux-doc

On Thu, Jan 29, 2026 at 01:49:56PM +0000, Charalampos Mitrodimas wrote:
> I'm under the impression that the `!RUST ||` guard here doesn't
> actually prevent the `$(bindgen-backend-option,...)` call from being
> executed. `$(...)` shell expansions should happen during the textual
> substitution phase, before symbol dependency evaluation occurs, check
> documentation at kconfig-macro-language.rst lines 228-229.
> 
> I did this test:
>   $ cat /tmp/fake_bindgen
>     #!/bin/bash
>     echo "[BINDGEN INVOKED] $(date '+%H:%M:%S') args: $@" >> /tmp/bindgen_calls.log
>     # Call real bindgen
>     exec /home/charmitro/.cargo/bin/bindgen "$@"
> 
>   $ make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- BINDGEN=/tmp/fake_bindgen defconfig
>     HOSTCC  scripts/basic/fixdep
>     ...
>   *** Default configuration is based on 'defconfig'
>   #
>   # configuration written to .config
>   #
> 
>   $ linux git:(master) rg CONFIG_RUST .config
>   ...
>   283:# CONFIG_RUST is not set
>   ...
> 
>   $ cat /tmp/bindgen_calls.log
>   [BINDGEN INVOKED] 15:44:44 args: --version workaround-for-0.69.0
>   [BINDGEN INVOKED] 15:44:44 args: ./scripts/rust_is_available_bindgen_libclang.h
>   [BINDGEN INVOKED] 15:44:44 args: --version workaround-for-0.69.0
>   [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64imv
>   [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32imv
>   [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zabha
>   [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zabha
>   [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zacas
>   [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zacas
>   [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbb
>   [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbb
>   [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zba
>   [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zba
>   [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbc
>   [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbc
>   [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbkb
>   [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbkb
>   [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zicsr_zifencei
>   [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zicsr_zifencei
> 
> So, CONFIG_RUST not set, yet bindgen was invoked. Not sure if that is
> intentional though.

While I have only recently adopted Kconfig, the section you pointed to
in kconfig-macro-language.rst makes it seem like this is expected. I
read that to mean all shell commands are going to be evaluated and
effectively turned into "y" and "n" before dependencies are evaluated.
You can test this with something like:

if RUST

config RUST_FOOBAR
    def_bool $(bindgen-backend-option,-obviously-not-supported)

endif

added in init/Kconfig and running your fake bindgen.

While this is obviously a little wasteful, I suspect this drastically
simplifies the shell commands part of Kconfig for no change in runtime
behavior.  The way that the dependency is currently written ensures that
either the result of bindgen-backend-option matters for the sake of
saying an extension is fully supported by the toolchain (when Rust is
enabled) or it does not matter (because Rust is not enabled).

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds
  2026-01-29 13:49   ` Charalampos Mitrodimas
  2026-01-29 23:25     ` Nathan Chancellor
@ 2026-02-06 12:13     ` Asuna Yang
  2026-02-06 12:24       ` Charalampos Mitrodimas
  1 sibling, 1 reply; 17+ messages in thread
From: Asuna Yang @ 2026-02-06 12:13 UTC (permalink / raw)
  To: Charalampos Mitrodimas
  Cc: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon, linux-kbuild,
	linux-kernel, rust-for-linux, llvm, linux-riscv, linux-doc

On 1/29/26 21:49, Charalampos Mitrodimas wrote:

> I'm under the impression that the `!RUST ||` guard here doesn't
> actually prevent the `$(bindgen-backend-option,...)` call from being
> executed. `$(...)` shell expansions should happen during the textual
> substitution phase, before symbol dependency evaluation occurs, check
> documentation at kconfig-macro-language.rst lines 228-229.

I suppose this is unavoidable if we decide to probe options rather than 
rely on version numbers.

Similar issue also occurs in `cc-option`, for example:

	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64imv)
	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32imv)

For 64-bit builds, `-march=rv32imv` will still be probed; for 32-bit 
builds, `-march=rv64imv` will still be probed.

I agree with Nathan that this trivial waste is worth it for the sake of 
simplicity.

Best regards,
Asuna


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds
  2026-02-06 12:13     ` Asuna Yang
@ 2026-02-06 12:24       ` Charalampos Mitrodimas
  0 siblings, 0 replies; 17+ messages in thread
From: Charalampos Mitrodimas @ 2026-02-06 12:24 UTC (permalink / raw)
  To: Asuna Yang
  Cc: Nathan Chancellor, Nicolas Schier, Miguel Ojeda, Boqun Feng,
	Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Alice Ryhl, Trevor Gross, Danilo Krummrich, Nick Desaulniers,
	Bill Wendling, Justin Stitt, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti, Jonathan Corbet, Conor Dooley,
	Mingcong Bai, Han Gao, Vivian Wang, Jason Montleon, linux-kbuild,
	linux-kernel, rust-for-linux, llvm, linux-riscv, linux-doc

Asuna Yang <xinrui.riscv@isrc.iscas.ac.cn> writes:

> On 1/29/26 21:49, Charalampos Mitrodimas wrote:
>
>> I'm under the impression that the `!RUST ||` guard here doesn't
>> actually prevent the `$(bindgen-backend-option,...)` call from being
>> executed. `$(...)` shell expansions should happen during the textual
>> substitution phase, before symbol dependency evaluation occurs, check
>> documentation at kconfig-macro-language.rst lines 228-229.
>
> I suppose this is unavoidable if we decide to probe options rather
> than rely on version numbers.
>
> Similar issue also occurs in `cc-option`, for example:
>
> 	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64imv)
> 	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32imv)
>
> For 64-bit builds, `-march=rv32imv` will still be probed; for 32-bit
> builds, `-march=rv64imv` will still be probed.
>
> I agree with Nathan that this trivial waste is worth it for the sake
> of simplicity.

Understood. Seems not worth it at all.

>
> Best regards,
> Asuna

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined
  2026-01-29 22:40   ` Nathan Chancellor
@ 2026-02-06 12:41     ` Asuna Yang
  0 siblings, 0 replies; 17+ messages in thread
From: Asuna Yang @ 2026-02-06 12:41 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: xinrui.riscv, Nicolas Schier, Miguel Ojeda, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Nick Desaulniers, Bill Wendling,
	Justin Stitt, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	Alexandre Ghiti, Jonathan Corbet, Conor Dooley, Mingcong Bai,
	Han Gao, Vivian Wang, Jason Montleon, linux-kbuild, linux-kernel,
	rust-for-linux, llvm, linux-riscv, linux-doc

On 1/30/26 06:40, Nathan Chancellor wrote:

> This might read a little better if it were
> 
>    scripts/Makefile.rust is included ..., so we perform ...
> 
> instead of
> 
>    Because ..., we perform ...
> 
> or at the very least reversing the phrases
> 
>    We perform ... because ...
> 
> But that could just be personal preference.

I think you're right. Since I'm not a native English speaker, some of my 
phrasing might not sound quite natural.

However, considering this isn't really a big deal, I'd prefer to skip 
submitting a new patch to fix it. Unlike GitHub, I'm concerned that a 
new patch might make too much noise on the mailing list and interrupt 
the thread.

Or if someone could help modify it when merging this patch, that would 
be better! I've read the docs, and the kernel tree seems to allow this 
practice.

Best regards,
Asuna


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-02-06 12:42 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
2025-12-30 16:47 ` [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile Asuna Yang
2026-01-29 22:35   ` Nathan Chancellor
2025-12-30 16:47 ` [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined Asuna Yang
2026-01-29 22:40   ` Nathan Chancellor
2026-02-06 12:41     ` Asuna Yang
2025-12-30 16:47 ` [PATCH v6 3/4] rust: add a Kconfig function to test for support of bindgen options Asuna Yang
2026-01-29 22:41   ` Nathan Chancellor
2025-12-30 16:47 ` [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds Asuna Yang
2026-01-29 13:49   ` Charalampos Mitrodimas
2026-01-29 23:25     ` Nathan Chancellor
2026-02-06 12:13     ` Asuna Yang
2026-02-06 12:24       ` Charalampos Mitrodimas
2025-12-30 16:58 ` [PATCH v6 0/4] RISC-V: " Asuna Yang
2026-01-22  7:20 ` Asuna Yang
2026-01-24  7:47   ` Paul Walmsley
2026-01-29  9:30     ` Conor Dooley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox