All of lore.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: 7+ 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
2026-03-30 15:55       ` Rong Xu

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 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.