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 v6 2/2] kbuild: distributed build support for Clang ThinLTO
Date: Fri, 27 Mar 2026 08:59:50 +0100 [thread overview]
Message-ID: <acY49h_jpzbd74vq@levanger> (raw)
In-Reply-To: <20260316212930.120438-3-xur@google.com>
On Mon, Mar 16, 2026 at 09:29:30PM +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>
> Tested-by: Piotr Gorski <piotrgorski@cachyos.org>
> Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> Tested-by: Nathan Chancellor <nathan@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/.gitignore b/.gitignore
> index 3a7241c941f5..c12bdf5a97f9 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -56,6 +56,7 @@
> *.zst
> Module.symvers
> dtbs-list
> +builtin.order
> modules.order
>
> #
> @@ -67,6 +68,7 @@ modules.order
> /vmlinux.32
> /vmlinux.map
> /vmlinux.symvers
> +/vmlinux.thinlto-index
> /vmlinux.unstripped
> /vmlinux-gdb.py
> /vmlinuz
> diff --git a/Makefile b/Makefile
> index ba5eee68d5d2..4a399b7f3b48 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1033,10 +1033,10 @@ export CC_FLAGS_SCS
> endif
>
> ifdef CONFIG_LTO_CLANG
> -ifdef CONFIG_LTO_CLANG_THIN
> -CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit
> -else
> +ifdef CONFIG_LTO_CLANG_FULL
> CC_FLAGS_LTO := -flto
> +else
> +CC_FLAGS_LTO := -flto=thin -fsplit-lto-unit
> endif
> CC_FLAGS_LTO += -fvisibility=hidden
>
This hunk does not apply on kbuild-next-unstable [1] (a possible
conflict resolution: [2]). Can you please rebase the patch set on
kbuild-next-unstable as Nathan suggested [3] ?
Thanks and kind regards
Nicolas
[1]: https://git.kernel.org/kbuild/l/kbuild-next-unstable
[2]: https://git.kernel.org/nsc/kbuild/c/505471374cfb107
[3]: https://lore.kernel.org/linux-kbuild/20260316204311.GA1329928@ax162/
prev parent reply other threads:[~2026-03-27 8:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-16 21:29 [PATCH v6 0/2] kbuild: distributed build support for Clang ThinLTO xur
2026-03-16 21:29 ` [PATCH v6 1/2] kbuild: move vmlinux.a build rule to scripts/Makefile.vmlinux_a xur
2026-03-25 9:35 ` Nicolas Schier
2026-03-25 16:34 ` Rong Xu
2026-03-16 21:29 ` [PATCH v6 2/2] kbuild: distributed build support for Clang ThinLTO xur
2026-03-27 7:59 ` Nicolas Schier [this message]
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=acY49h_jpzbd74vq@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