linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Andreas Hindborg <a.hindborg@kernel.org>
To: Alice Ryhl <aliceryhl@google.com>, Miguel Ojeda <ojeda@kernel.org>
Cc: "Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Alexandre Courbot" <acourbot@nvidia.com>,
	"Will Deacon" <will@kernel.org>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
	"Bill Wendling" <morbo@google.com>,
	"Justin Stitt" <justinstitt@google.com>,
	"Nicolas Schier" <nicolas.schier@linux.dev>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Uladzislau Rezki" <urezki@gmail.com>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
	llvm@lists.linux.dev, linux-kbuild@vger.kernel.org,
	linux-mm@kvack.org, nouveau@lists.freedesktop.org,
	"Alice Ryhl" <aliceryhl@google.com>
Subject: Re: [PATCH 2/4] rust: helpers: #define __rust_helper
Date: Wed, 07 Jan 2026 12:49:32 +0100	[thread overview]
Message-ID: <875x9diqwj.fsf@t14s.mail-host-address-is-not-set> (raw)
In-Reply-To: <20251202-inline-helpers-v1-2-879dae33a66a@google.com>

Alice Ryhl <aliceryhl@google.com> writes:

> From: Gary Guo <gary@garyguo.net>
>
> Because of LLVM inling checks, it's generally not possible to inline a C
> helper into Rust code, even with LTO:
>
> * LLVM doesn't want to inline functions compiled with
>   `-fno-delete-null-pointer-checks` with code compiled without. The C
>   CGUs all have this enabled and Rust CGUs don't. Inlining is okay since
>   this is one of the hardening features that does not change the ABI,
>   and we shouldn't have null pointer dereferences in these helpers.
>
> * LLVM doesn't want to inline functions with different list of builtins. C
>   side has `-fno-builtin-wcslen`; `wcslen` is not a Rust builtin, so
>   they should be compatible, but LLVM does not perform inlining due to
>   attributes mismatch.
>
> * clang and Rust doesn't have the exact target string. Clang generates
>   `+cmov,+cx8,+fxsr` but Rust doesn't enable them (in fact, Rust will
>   complain if `-Ctarget-feature=+cmov,+cx8,+fxsr` is used). x86-64
>   always enable these features, so they are in fact the same target
>   string, but LLVM doesn't understand this and so inlining is inhibited.
>   This can be bypassed with `--ignore-tti-inline-compatible`, but this
>   is a hidden option.
>
> To fix this, we can add __always_inline on every helper, which skips
> these LLVM inlining checks. For this purpose, introduce a new
> __rust_helper macro that needs to be added to every helper.
>
> The actual additions of __rust_helper can happen in separate patches. A
> "flag day" change is not required since missing annotations do not lead
> to anything worse than missing inlining.
>
> Signed-off-by: Gary Guo <gary@garyguo.net>
> Signed-off-by: Alice Ryhl <aliceryhl@google.com>

Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org>


Best regards,
Andreas Hindborg




  reply	other threads:[~2026-01-07 12:24 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-02 20:27 [PATCH 0/4] Inline helpers into Rust without full LTO Alice Ryhl
2025-12-02 20:27 ` [PATCH 1/4] vmalloc: export vrealloc_node_align_noprof Alice Ryhl
2025-12-02 20:27 ` [PATCH 2/4] rust: helpers: #define __rust_helper Alice Ryhl
2026-01-07 11:49   ` Andreas Hindborg [this message]
2025-12-02 20:27 ` [PATCH 3/4] kbuild: rust: add `CONFIG_RUSTC_CLANG_LLVM_COMPATIBLE` Alice Ryhl
2025-12-02 20:27 ` [PATCH 4/4] build: rust: provide an option to inline C helpers into Rust Alice Ryhl
2025-12-03  0:40   ` Matthew Maurer
2025-12-03 18:09   ` Gary Guo
2026-01-07 12:10     ` Andreas Hindborg
2025-12-03 21:25   ` Nathan Chancellor
2025-12-03 23:25     ` Matthew Maurer
2025-12-04  9:46     ` Alice Ryhl
2025-12-04 10:07   ` Peter Zijlstra
2025-12-04 10:23     ` Alice Ryhl
2025-12-04 11:11       ` Peter Zijlstra
2025-12-04 11:57         ` Miguel Ojeda
2025-12-04 12:39           ` Peter Zijlstra
2025-12-04 13:03             ` Alice Ryhl
2025-12-04 12:49           ` Emilio Cobos Álvarez
2025-12-04 13:15             ` Alice Ryhl
2025-12-04 14:27               ` Peter Zijlstra
2025-12-04 19:29                 ` Matthew Maurer
2026-01-07 12:23 ` [PATCH 0/4] Inline helpers into Rust without full LTO Andreas Hindborg
2026-01-07 12:35   ` Peter Zijlstra
2026-01-07 13:12     ` Andreas Hindborg
2026-01-07 13:18       ` Peter Zijlstra
2026-01-07 13:40         ` Andreas Hindborg
2026-01-07 13:42           ` Alice Ryhl
2026-01-07 14:01             ` Peter Zijlstra

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=875x9diqwj.fsf@t14s.mail-host-address-is-not-set \
    --to=a.hindborg@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=akpm@linux-foundation.org \
    --cc=aliceryhl@google.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=justinstitt@google.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=llvm@lists.linux.dev \
    --cc=lossin@kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=morbo@google.com \
    --cc=nathan@kernel.org \
    --cc=nick.desaulniers+lkml@gmail.com \
    --cc=nicolas.schier@linux.dev \
    --cc=nouveau@lists.freedesktop.org \
    --cc=ojeda@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tmgross@umich.edu \
    --cc=urezki@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox