public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Nicolas Schier <nsc@kernel.org>
To: xur@google.com
Cc: Masahiro Yamada <masahiroy@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <nick.desaulniers+lkml@gmail.com>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>,
	Miguel Ojeda <ojeda@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Alice Ryhl <aliceryhl@google.com>,
	Sami Tolvanen <samitolvanen@google.com>,
	"Mike Rapoport (Microsoft)" <rppt@kernel.org>,
	Rafael Aquini <aquini@redhat.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Stafford Horne <shorne@gmail.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Piotr Gorski <piotrgorski@cachyos.org>,
	Venkat Rao Bagalkote <venkat88@linux.ibm.com>,
	Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>,
	Teresa Johnson <tejohnson@google.com>,
	linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org,
	llvm@lists.linux.dev
Subject: Re: [PATCH v7 3/3] kbuild: distributed build support for Clang ThinLTO
Date: Sun, 29 Mar 2026 22:05:02 +0200	[thread overview]
Message-ID: <acmF7nvIh2nX5hjK@levanger> (raw)
In-Reply-To: <20260328011927.3569802-4-xur@google.com>

On Sat, Mar 28, 2026 at 01:19:27AM +0000, xur@google.com wrote:
> From: Rong Xu <xur@google.com>
> 
> Add distributed ThinLTO build support for the Linux kernel.
> This new mode offers several advantages: (1) Increased
> flexibility in handling user-specified build options.
> (2) Improved user-friendliness for developers. (3) Greater
> convenience for integrating with objtool and livepatch.
> 
> Note that "distributed" in this context refers to a term
> that differentiates in-process ThinLTO builds by invoking
> backend compilation through the linker, not necessarily
> building in distributed environments.
> 
> Distributed ThinLTO is enabled via the
> `CONFIG_LTO_CLANG_THIN_DIST` Kconfig option. For example:
>  > make LLVM=1 defconfig
>  > scripts/config -e LTO_CLANG_THIN_DIST
>  > make LLVM=1 oldconfig
>  > make LLVM=1 vmlinux -j <..>
> 
> The build flow proceeds in four stages:
>   1. Perform FE compilation, mirroring the in-process ThinLTO mode.
>   2. Thin-link the generated IR files and object files.
>   3. Find all IR files and perform BE compilation, using the flags
>     stored in the .*.o.cmd files.
>   4. Link the BE results to generate the final vmlinux.o.
> 
> NOTE: This patch currently implements the build for the main kernel
> image (vmlinux) only. Kernel module support is planned for a
> subsequent patch.
> 
> Tested on the following arch: x86, arm64, loongarch, and
> riscv.
> 
> The earlier implementation details can be found here:
> https://discourse.llvm.org/t/rfc-distributed-thinlto-build-for-kernel/85934
> 
> Signed-off-by: Rong Xu <xur@google.com>
> Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>  .gitignore                 |  2 ++
>  Makefile                   |  9 +++++----
>  arch/Kconfig               | 19 ++++++++++++++++++
>  scripts/Makefile.lib       |  7 +++++++
>  scripts/Makefile.thinlto   | 40 ++++++++++++++++++++++++++++++++++++++
>  scripts/Makefile.vmlinux_a | 37 +++++++++++++++++++++++++++++++++++
>  scripts/mod/modpost.c      | 15 +++++++++++---
>  7 files changed, 122 insertions(+), 7 deletions(-)
>  create mode 100644 scripts/Makefile.thinlto
> 
[...]
> diff --git a/Makefile b/Makefile
> index 69ccf9b8507d..d474b6f0f212 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1047,11 +1047,11 @@ export CC_FLAGS_SCS
>  endif
>  
>  ifdef CONFIG_LTO_CLANG
> -ifdef CONFIG_LTO_CLANG_THIN
> +ifdef CONFIG_LTO_CLANG_FULL
> +CC_FLAGS_LTO	:= -flto
> +else
>  CC_FLAGS_LTO	:= -flto=thin -fsplit-lto-unit
>  KBUILD_LDFLAGS += $(call ld-option,--lto-whole-program-visibility -mllvm -always-rename-promoted-locals=false)
> -else
> -CC_FLAGS_LTO	:= -flto
>  endif
>  CC_FLAGS_LTO	+= -fvisibility=hidden
>  

This hunk is just reordering but does not change any functionality,
right?

Iff yes, I'd skip this one.


Nathan, Piotr: your tags got dropped from v6 to v7.  Do you want to
renew them?

Kind regards
Nicolas

  reply	other threads:[~2026-03-29 20:12 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-28  1:19 [PATCH v7 0/3] kbuild: distributed build support for Clang ThinLTO xur
2026-03-28  1:19 ` [PATCH v7 1/3] kbuild: move vmlinux.a build rule to scripts/Makefile.vmlinux_a xur
2026-03-28  1:19 ` [PATCH v7 2/3] kbuild: change --thin back to 'T' in $(AR) xur
2026-03-28  1:19 ` [PATCH v7 3/3] kbuild: distributed build support for Clang ThinLTO xur
2026-03-29 20:05   ` Nicolas Schier [this message]
2026-03-30 10:01     ` Nathan Chancellor

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=acmF7nvIh2nX5hjK@levanger \
    --to=nsc@kernel.org \
    --cc=aliceryhl@google.com \
    --cc=aquini@redhat.com \
    --cc=christophe.leroy@csgroup.eu \
    --cc=justinstitt@google.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=masahiroy@kernel.org \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=morbo@google.com \
    --cc=mpe@ellerman.id.au \
    --cc=nathan@kernel.org \
    --cc=nick.desaulniers+lkml@gmail.com \
    --cc=ojeda@kernel.org \
    --cc=piotrgorski@cachyos.org \
    --cc=rppt@kernel.org \
    --cc=samitolvanen@google.com \
    --cc=shorne@gmail.com \
    --cc=tejohnson@google.com \
    --cc=tglx@linutronix.de \
    --cc=venkat88@linux.ibm.com \
    --cc=xur@google.com \
    /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