scripts/Makefile.autofdo | 6 +++++- scripts/Makefile.lib | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-)
This patch enables AutoFDO build support for Rust code within the Linux
kernel. This allows Rust code to be profiled and optimized based on the
profile.
This was verified by inspecting the object files and confirming that
they look correct. It was also verified in conjuction with my helpers
inlining series, and it also appears to have worked correctly when
combined with that series once one missing thing [1] was fixed in the
helpers inlining series.
Link: https://lore.kernel.org/all/aasPsbMEsX6iGUl8@google.com/ [1]
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
scripts/Makefile.autofdo | 6 +++++-
scripts/Makefile.lib | 3 +++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/scripts/Makefile.autofdo b/scripts/Makefile.autofdo
index 1caf2457e585..3f08acab4549 100644
--- a/scripts/Makefile.autofdo
+++ b/scripts/Makefile.autofdo
@@ -3,14 +3,18 @@
# Enable available and selected Clang AutoFDO features.
CFLAGS_AUTOFDO_CLANG := -fdebug-info-for-profiling -mllvm -enable-fs-discriminator=true -mllvm -improved-fs-discriminator=true
+RUSTFLAGS_AUTOFDO_CLANG := -Zdebug-info-for-profiling -Cllvm-args=-enable-fs-discriminator=true -Cllvm-args=-improved-fs-discriminator=true
ifndef CONFIG_DEBUG_INFO
CFLAGS_AUTOFDO_CLANG += -gmlt
+ RUSTFLAGS_AUTOFDO_CLANG += -Cdebuginfo=line-tables-only
endif
ifdef CLANG_AUTOFDO_PROFILE
CFLAGS_AUTOFDO_CLANG += -fprofile-sample-use=$(CLANG_AUTOFDO_PROFILE) -ffunction-sections
CFLAGS_AUTOFDO_CLANG += -fsplit-machine-functions
+ RUSTFLAGS_AUTOFDO_CLANG += -Zprofile-sample-use=$(CLANG_AUTOFDO_PROFILE) -Zfunction-sections=y
+ RUSTFLAGS_AUTOFDO_CLANG += -Cllvm-args=-split-machine-functions
endif
ifdef CONFIG_LTO_CLANG_THIN
@@ -21,4 +25,4 @@ ifdef CONFIG_LTO_CLANG_THIN
KBUILD_LDFLAGS += -plugin-opt=-split-machine-functions
endif
-export CFLAGS_AUTOFDO_CLANG
+export CFLAGS_AUTOFDO_CLANG RUSTFLAGS_AUTOFDO_CLANG
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 0718e39cedda..eaddf6637669 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -123,6 +123,9 @@ ifeq ($(CONFIG_AUTOFDO_CLANG),y)
_c_flags += $(if $(patsubst n%,, \
$(AUTOFDO_PROFILE_$(target-stem).o)$(AUTOFDO_PROFILE)$(is-kernel-object)), \
$(CFLAGS_AUTOFDO_CLANG))
+_rust_flags += $(if $(patsubst n%,, \
+ $(AUTOFDO_PROFILE_$(target-stem).o)$(AUTOFDO_PROFILE)$(is-kernel-object)), \
+ $(RUSTFLAGS_AUTOFDO_CLANG))
endif
#
---
base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
change-id: 20260309-autofdo-8d01e7977fed
Best regards,
--
Alice Ryhl <aliceryhl@google.com>
On Thu Mar 19, 2026 at 11:22 AM GMT, Alice Ryhl wrote: > This patch enables AutoFDO build support for Rust code within the Linux > kernel. This allows Rust code to be profiled and optimized based on the > profile. > > This was verified by inspecting the object files and confirming that > they look correct. It was also verified in conjuction with my helpers > inlining series, and it also appears to have worked correctly when > combined with that series once one missing thing [1] was fixed in the > helpers inlining series. > > Link: https://lore.kernel.org/all/aasPsbMEsX6iGUl8@google.com/ [1] > Signed-off-by: Alice Ryhl <aliceryhl@google.com> > --- > scripts/Makefile.autofdo | 6 +++++- > scripts/Makefile.lib | 3 +++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/scripts/Makefile.autofdo b/scripts/Makefile.autofdo > index 1caf2457e585..3f08acab4549 100644 > --- a/scripts/Makefile.autofdo > +++ b/scripts/Makefile.autofdo > @@ -3,14 +3,18 @@ > # Enable available and selected Clang AutoFDO features. > > CFLAGS_AUTOFDO_CLANG := -fdebug-info-for-profiling -mllvm -enable-fs-discriminator=true -mllvm -improved-fs-discriminator=true > +RUSTFLAGS_AUTOFDO_CLANG := -Zdebug-info-for-profiling -Cllvm-args=-enable-fs-discriminator=true -Cllvm-args=-improved-fs-discriminator=true I get that it's currently named as AUTOFDO_CLANG, but this really ought to be AUTOFDO_LLVM... The flag translations look correct to me. Best, Gary > > ifndef CONFIG_DEBUG_INFO > CFLAGS_AUTOFDO_CLANG += -gmlt > + RUSTFLAGS_AUTOFDO_CLANG += -Cdebuginfo=line-tables-only > endif > > ifdef CLANG_AUTOFDO_PROFILE > CFLAGS_AUTOFDO_CLANG += -fprofile-sample-use=$(CLANG_AUTOFDO_PROFILE) -ffunction-sections > CFLAGS_AUTOFDO_CLANG += -fsplit-machine-functions > + RUSTFLAGS_AUTOFDO_CLANG += -Zprofile-sample-use=$(CLANG_AUTOFDO_PROFILE) -Zfunction-sections=y > + RUSTFLAGS_AUTOFDO_CLANG += -Cllvm-args=-split-machine-functions > endif > > ifdef CONFIG_LTO_CLANG_THIN > @@ -21,4 +25,4 @@ ifdef CONFIG_LTO_CLANG_THIN > KBUILD_LDFLAGS += -plugin-opt=-split-machine-functions > endif > > -export CFLAGS_AUTOFDO_CLANG > +export CFLAGS_AUTOFDO_CLANG RUSTFLAGS_AUTOFDO_CLANG > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib > index 0718e39cedda..eaddf6637669 100644 > --- a/scripts/Makefile.lib > +++ b/scripts/Makefile.lib > @@ -123,6 +123,9 @@ ifeq ($(CONFIG_AUTOFDO_CLANG),y) > _c_flags += $(if $(patsubst n%,, \ > $(AUTOFDO_PROFILE_$(target-stem).o)$(AUTOFDO_PROFILE)$(is-kernel-object)), \ > $(CFLAGS_AUTOFDO_CLANG)) > +_rust_flags += $(if $(patsubst n%,, \ > + $(AUTOFDO_PROFILE_$(target-stem).o)$(AUTOFDO_PROFILE)$(is-kernel-object)), \ > + $(RUSTFLAGS_AUTOFDO_CLANG)) > endif > > # > > --- > base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681 > change-id: 20260309-autofdo-8d01e7977fed > > Best regards,
On Thu, Mar 19, 2026 at 12:31 PM Gary Guo <gary@garyguo.net> wrote: > > On Thu Mar 19, 2026 at 11:22 AM GMT, Alice Ryhl wrote: > > This patch enables AutoFDO build support for Rust code within the Linux > > kernel. This allows Rust code to be profiled and optimized based on the > > profile. > > > > This was verified by inspecting the object files and confirming that > > they look correct. It was also verified in conjuction with my helpers > > inlining series, and it also appears to have worked correctly when > > combined with that series once one missing thing [1] was fixed in the > > helpers inlining series. > > > > Link: https://lore.kernel.org/all/aasPsbMEsX6iGUl8@google.com/ [1] > > Signed-off-by: Alice Ryhl <aliceryhl@google.com> > > --- > > scripts/Makefile.autofdo | 6 +++++- > > scripts/Makefile.lib | 3 +++ > > 2 files changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/scripts/Makefile.autofdo b/scripts/Makefile.autofdo > > index 1caf2457e585..3f08acab4549 100644 > > --- a/scripts/Makefile.autofdo > > +++ b/scripts/Makefile.autofdo > > @@ -3,14 +3,18 @@ > > # Enable available and selected Clang AutoFDO features. > > > > CFLAGS_AUTOFDO_CLANG := -fdebug-info-for-profiling -mllvm -enable-fs-discriminator=true -mllvm -improved-fs-discriminator=true > > +RUSTFLAGS_AUTOFDO_CLANG := -Zdebug-info-for-profiling -Cllvm-args=-enable-fs-discriminator=true -Cllvm-args=-improved-fs-discriminator=true > > I get that it's currently named as AUTOFDO_CLANG, but this really ought to be > AUTOFDO_LLVM... > > The flag translations look correct to me. Do you think it's worth having Rust not match the CFLAGS here? Alice
On Thu Mar 19, 2026 at 11:44 AM GMT, Alice Ryhl wrote: > On Thu, Mar 19, 2026 at 12:31 PM Gary Guo <gary@garyguo.net> wrote: >> >> On Thu Mar 19, 2026 at 11:22 AM GMT, Alice Ryhl wrote: >> > This patch enables AutoFDO build support for Rust code within the Linux >> > kernel. This allows Rust code to be profiled and optimized based on the >> > profile. >> > >> > This was verified by inspecting the object files and confirming that >> > they look correct. It was also verified in conjuction with my helpers >> > inlining series, and it also appears to have worked correctly when >> > combined with that series once one missing thing [1] was fixed in the >> > helpers inlining series. >> > >> > Link: https://lore.kernel.org/all/aasPsbMEsX6iGUl8@google.com/ [1] >> > Signed-off-by: Alice Ryhl <aliceryhl@google.com> >> > --- >> > scripts/Makefile.autofdo | 6 +++++- >> > scripts/Makefile.lib | 3 +++ >> > 2 files changed, 8 insertions(+), 1 deletion(-) >> > >> > diff --git a/scripts/Makefile.autofdo b/scripts/Makefile.autofdo >> > index 1caf2457e585..3f08acab4549 100644 >> > --- a/scripts/Makefile.autofdo >> > +++ b/scripts/Makefile.autofdo >> > @@ -3,14 +3,18 @@ >> > # Enable available and selected Clang AutoFDO features. >> > >> > CFLAGS_AUTOFDO_CLANG := -fdebug-info-for-profiling -mllvm -enable-fs-discriminator=true -mllvm -improved-fs-discriminator=true >> > +RUSTFLAGS_AUTOFDO_CLANG := -Zdebug-info-for-profiling -Cllvm-args=-enable-fs-discriminator=true -Cllvm-args=-improved-fs-discriminator=true >> >> I get that it's currently named as AUTOFDO_CLANG, but this really ought to be >> AUTOFDO_LLVM... >> >> The flag translations look correct to me. > > Do you think it's worth having Rust not match the CFLAGS here? > I think the C flags should probably be renamed AUTOFDO_LLVM too. After call, all the perf tools involved here are called llvm-foobar as well. Best, Gary
On Thu, Mar 19, 2026 at 12:47 PM Gary Guo <gary@garyguo.net> wrote: > > On Thu Mar 19, 2026 at 11:44 AM GMT, Alice Ryhl wrote: > > On Thu, Mar 19, 2026 at 12:31 PM Gary Guo <gary@garyguo.net> wrote: > >> > >> On Thu Mar 19, 2026 at 11:22 AM GMT, Alice Ryhl wrote: > >> > This patch enables AutoFDO build support for Rust code within the Linux > >> > kernel. This allows Rust code to be profiled and optimized based on the > >> > profile. > >> > > >> > This was verified by inspecting the object files and confirming that > >> > they look correct. It was also verified in conjuction with my helpers > >> > inlining series, and it also appears to have worked correctly when > >> > combined with that series once one missing thing [1] was fixed in the > >> > helpers inlining series. > >> > > >> > Link: https://lore.kernel.org/all/aasPsbMEsX6iGUl8@google.com/ [1] > >> > Signed-off-by: Alice Ryhl <aliceryhl@google.com> > >> > --- > >> > scripts/Makefile.autofdo | 6 +++++- > >> > scripts/Makefile.lib | 3 +++ > >> > 2 files changed, 8 insertions(+), 1 deletion(-) > >> > > >> > diff --git a/scripts/Makefile.autofdo b/scripts/Makefile.autofdo > >> > index 1caf2457e585..3f08acab4549 100644 > >> > --- a/scripts/Makefile.autofdo > >> > +++ b/scripts/Makefile.autofdo > >> > @@ -3,14 +3,18 @@ > >> > # Enable available and selected Clang AutoFDO features. > >> > > >> > CFLAGS_AUTOFDO_CLANG := -fdebug-info-for-profiling -mllvm -enable-fs-discriminator=true -mllvm -improved-fs-discriminator=true > >> > +RUSTFLAGS_AUTOFDO_CLANG := -Zdebug-info-for-profiling -Cllvm-args=-enable-fs-discriminator=true -Cllvm-args=-improved-fs-discriminator=true > >> > >> I get that it's currently named as AUTOFDO_CLANG, but this really ought to be > >> AUTOFDO_LLVM... > >> > >> The flag translations look correct to me. > > > > Do you think it's worth having Rust not match the CFLAGS here? > > > > I think the C flags should probably be renamed AUTOFDO_LLVM too. After call, all > the perf tools involved here are called llvm-foobar as well. But isn't it just called this because the config option is CONFIG_AUTOFDO_CLANG? So it's the CFLAGS or RUSTFLAGS related to that particular config option. It may make sense to rename CONFIG_AUTOFDO_CLANG to CONFIG_AUTOFDO, but that's out-of-scope for this change, in my opinion. Alice
On Thu Mar 19, 2026 at 4:33 PM GMT, Alice Ryhl wrote: > On Thu, Mar 19, 2026 at 12:47 PM Gary Guo <gary@garyguo.net> wrote: >> >> On Thu Mar 19, 2026 at 11:44 AM GMT, Alice Ryhl wrote: >> > On Thu, Mar 19, 2026 at 12:31 PM Gary Guo <gary@garyguo.net> wrote: >> >> >> >> On Thu Mar 19, 2026 at 11:22 AM GMT, Alice Ryhl wrote: >> >> > This patch enables AutoFDO build support for Rust code within the Linux >> >> > kernel. This allows Rust code to be profiled and optimized based on the >> >> > profile. >> >> > >> >> > This was verified by inspecting the object files and confirming that >> >> > they look correct. It was also verified in conjuction with my helpers >> >> > inlining series, and it also appears to have worked correctly when >> >> > combined with that series once one missing thing [1] was fixed in the >> >> > helpers inlining series. >> >> > >> >> > Link: https://lore.kernel.org/all/aasPsbMEsX6iGUl8@google.com/ [1] >> >> > Signed-off-by: Alice Ryhl <aliceryhl@google.com> >> >> > --- >> >> > scripts/Makefile.autofdo | 6 +++++- >> >> > scripts/Makefile.lib | 3 +++ >> >> > 2 files changed, 8 insertions(+), 1 deletion(-) >> >> > >> >> > diff --git a/scripts/Makefile.autofdo b/scripts/Makefile.autofdo >> >> > index 1caf2457e585..3f08acab4549 100644 >> >> > --- a/scripts/Makefile.autofdo >> >> > +++ b/scripts/Makefile.autofdo >> >> > @@ -3,14 +3,18 @@ >> >> > # Enable available and selected Clang AutoFDO features. >> >> > >> >> > CFLAGS_AUTOFDO_CLANG := -fdebug-info-for-profiling -mllvm -enable-fs-discriminator=true -mllvm -improved-fs-discriminator=true >> >> > +RUSTFLAGS_AUTOFDO_CLANG := -Zdebug-info-for-profiling -Cllvm-args=-enable-fs-discriminator=true -Cllvm-args=-improved-fs-discriminator=true >> >> >> >> I get that it's currently named as AUTOFDO_CLANG, but this really ought to be >> >> AUTOFDO_LLVM... >> >> >> >> The flag translations look correct to me. >> > >> > Do you think it's worth having Rust not match the CFLAGS here? >> > >> >> I think the C flags should probably be renamed AUTOFDO_LLVM too. After call, all >> the perf tools involved here are called llvm-foobar as well. > > But isn't it just called this because the config option is > CONFIG_AUTOFDO_CLANG? So it's the CFLAGS or RUSTFLAGS related to that > particular config option. It may make sense to rename > CONFIG_AUTOFDO_CLANG to CONFIG_AUTOFDO, but that's out-of-scope for > this change, in my opinion. I get that it's an existing config name, but previously it is a correct description, while after this change it is no longer accurate. I don't know if there's an established practice on renaming CONFIG options when this sort thing happens though. Perhaps one way is to have add CONFIG_AUTOFDO_CLANG that selects CONFIG_AUTOFDO. Best, Gary
On Thu, Mar 19, 2026 at 07:09:22PM +0000, Gary Guo wrote: > On Thu Mar 19, 2026 at 4:33 PM GMT, Alice Ryhl wrote: > > On Thu, Mar 19, 2026 at 12:47 PM Gary Guo <gary@garyguo.net> wrote: > >> On Thu Mar 19, 2026 at 11:44 AM GMT, Alice Ryhl wrote: > >> > Do you think it's worth having Rust not match the CFLAGS here? > >> > > >> > >> I think the C flags should probably be renamed AUTOFDO_LLVM too. After call, all > >> the perf tools involved here are called llvm-foobar as well. > > > > But isn't it just called this because the config option is > > CONFIG_AUTOFDO_CLANG? So it's the CFLAGS or RUSTFLAGS related to that > > particular config option. It may make sense to rename > > CONFIG_AUTOFDO_CLANG to CONFIG_AUTOFDO, but that's out-of-scope for > > this change, in my opinion. > > I get that it's an existing config name, but previously it is a correct > description, while after this change it is no longer accurate. > > I don't know if there's an established practice on renaming CONFIG options when > this sort thing happens though. Perhaps one way is to have add > CONFIG_AUTOFDO_CLANG that selects CONFIG_AUTOFDO. As Miguel mentioned, there is the transitional keyword for Kconfig to handle renames now but I would really like there to be a compelling reason for the rename other than LLVM is a little more accurate than CLANG. The kernel has never really done a great job of referring to Clang when it means the C compiler vs. the whole LLVM toolchain (like LTO_CLANG and all its derivatives should be LTO_LLVM since it requires ld.lld, llvm-nm, and llvm-ar in addition to clang). Additionally, aside from the configuration, there is the user facing Make variable CLANG_AUTOFDO_PROFILE that would presumably need to be changed for consistency. If we want to change the internal Kbuild variable names, I don't care as much about that. Cheers, Nathan
On Thu Mar 19, 2026 at 11:54 PM GMT, Nathan Chancellor wrote: > On Thu, Mar 19, 2026 at 07:09:22PM +0000, Gary Guo wrote: >> On Thu Mar 19, 2026 at 4:33 PM GMT, Alice Ryhl wrote: >> > On Thu, Mar 19, 2026 at 12:47 PM Gary Guo <gary@garyguo.net> wrote: >> >> On Thu Mar 19, 2026 at 11:44 AM GMT, Alice Ryhl wrote: >> >> > Do you think it's worth having Rust not match the CFLAGS here? >> >> > >> >> >> >> I think the C flags should probably be renamed AUTOFDO_LLVM too. After call, all >> >> the perf tools involved here are called llvm-foobar as well. >> > >> > But isn't it just called this because the config option is >> > CONFIG_AUTOFDO_CLANG? So it's the CFLAGS or RUSTFLAGS related to that >> > particular config option. It may make sense to rename >> > CONFIG_AUTOFDO_CLANG to CONFIG_AUTOFDO, but that's out-of-scope for >> > this change, in my opinion. >> >> I get that it's an existing config name, but previously it is a correct >> description, while after this change it is no longer accurate. >> >> I don't know if there's an established practice on renaming CONFIG options when >> this sort thing happens though. Perhaps one way is to have add >> CONFIG_AUTOFDO_CLANG that selects CONFIG_AUTOFDO. > > As Miguel mentioned, there is the transitional keyword for Kconfig to > handle renames now but I would really like there to be a compelling > reason for the rename other than LLVM is a little more accurate than > CLANG. The kernel has never really done a great job of referring to > Clang when it means the C compiler vs. the whole LLVM toolchain (like > LTO_CLANG and all its derivatives should be LTO_LLVM since it requires > ld.lld, llvm-nm, and llvm-ar in addition to clang). Additionally, aside > from the configuration, there is the user facing Make variable > CLANG_AUTOFDO_PROFILE that would presumably need to be changed for > consistency. If you think the config name should be kept as CONFIG_AUTOFDO_CLANG, then I think there is no real benefit in changing the variable name. Reviewed-by: Gary Guo <gary@garyguo.net> Best, Gary
I have reviewed this patch and it looks good to me. I suggest updating autofdo.rst to explicitly mention support for Rust. Regarding the naming convention, I understand Gary's point that Clang and Rust should both be viewed as LLVM frontends. I am open to renaming *FLAGS_AUTOFDO_CLANG to *FLAGS_AUTOFDO_LLVM. However, I would prefer not to use *FLAGS_AUTOFDO, as GCC also supports AutoFDO, but it hasn't been integrated into kernel builds yet. These naming updates can be handled in a separate patch. Reviewed-by: Rong Xu <xur@google.com> -Rong On Fri, Mar 20, 2026 at 9:48 PM Gary Guo <gary@garyguo.net> wrote: > > On Thu Mar 19, 2026 at 11:54 PM GMT, Nathan Chancellor wrote: > > On Thu, Mar 19, 2026 at 07:09:22PM +0000, Gary Guo wrote: > >> On Thu Mar 19, 2026 at 4:33 PM GMT, Alice Ryhl wrote: > >> > On Thu, Mar 19, 2026 at 12:47 PM Gary Guo <gary@garyguo.net> wrote: > >> >> On Thu Mar 19, 2026 at 11:44 AM GMT, Alice Ryhl wrote: > >> >> > Do you think it's worth having Rust not match the CFLAGS here? > >> >> > > >> >> > >> >> I think the C flags should probably be renamed AUTOFDO_LLVM too. After call, all > >> >> the perf tools involved here are called llvm-foobar as well. > >> > > >> > But isn't it just called this because the config option is > >> > CONFIG_AUTOFDO_CLANG? So it's the CFLAGS or RUSTFLAGS related to that > >> > particular config option. It may make sense to rename > >> > CONFIG_AUTOFDO_CLANG to CONFIG_AUTOFDO, but that's out-of-scope for > >> > this change, in my opinion. > >> > >> I get that it's an existing config name, but previously it is a correct > >> description, while after this change it is no longer accurate. > >> > >> I don't know if there's an established practice on renaming CONFIG options when > >> this sort thing happens though. Perhaps one way is to have add > >> CONFIG_AUTOFDO_CLANG that selects CONFIG_AUTOFDO. > > > > As Miguel mentioned, there is the transitional keyword for Kconfig to > > handle renames now but I would really like there to be a compelling > > reason for the rename other than LLVM is a little more accurate than > > CLANG. The kernel has never really done a great job of referring to > > Clang when it means the C compiler vs. the whole LLVM toolchain (like > > LTO_CLANG and all its derivatives should be LTO_LLVM since it requires > > ld.lld, llvm-nm, and llvm-ar in addition to clang). Additionally, aside > > from the configuration, there is the user facing Make variable > > CLANG_AUTOFDO_PROFILE that would presumably need to be changed for > > consistency. > > If you think the config name should be kept as CONFIG_AUTOFDO_CLANG, then I > think there is no real benefit in changing the variable name. > > Reviewed-by: Gary Guo <gary@garyguo.net> > > Best, > Gary
On Thu, Mar 19, 2026 at 04:54:43PM -0700, Nathan Chancellor wrote: > On Thu, Mar 19, 2026 at 07:09:22PM +0000, Gary Guo wrote: > > On Thu Mar 19, 2026 at 4:33 PM GMT, Alice Ryhl wrote: > > > On Thu, Mar 19, 2026 at 12:47 PM Gary Guo <gary@garyguo.net> wrote: > > >> On Thu Mar 19, 2026 at 11:44 AM GMT, Alice Ryhl wrote: > > >> > Do you think it's worth having Rust not match the CFLAGS here? > > >> > > > >> > > >> I think the C flags should probably be renamed AUTOFDO_LLVM too. After call, all > > >> the perf tools involved here are called llvm-foobar as well. > > > > > > But isn't it just called this because the config option is > > > CONFIG_AUTOFDO_CLANG? So it's the CFLAGS or RUSTFLAGS related to that > > > particular config option. It may make sense to rename > > > CONFIG_AUTOFDO_CLANG to CONFIG_AUTOFDO, but that's out-of-scope for > > > this change, in my opinion. > > > > I get that it's an existing config name, but previously it is a correct > > description, while after this change it is no longer accurate. > > > > I don't know if there's an established practice on renaming CONFIG options when > > this sort thing happens though. Perhaps one way is to have add > > CONFIG_AUTOFDO_CLANG that selects CONFIG_AUTOFDO. > > As Miguel mentioned, there is the transitional keyword for Kconfig to > handle renames now but I would really like there to be a compelling > reason for the rename other than LLVM is a little more accurate than > CLANG. The kernel has never really done a great job of referring to > Clang when it means the C compiler vs. the whole LLVM toolchain (like > LTO_CLANG and all its derivatives should be LTO_LLVM since it requires > ld.lld, llvm-nm, and llvm-ar in addition to clang). Additionally, aside > from the configuration, there is the user facing Make variable > CLANG_AUTOFDO_PROFILE that would presumably need to be changed for > consistency. > > If we want to change the internal Kbuild variable names, I don't care as > much about that. How about we just call them: * CFLAGS_AUTOFDO_CLANG * RUSTFLAGS_AUTOFDO then? For cflags, clarify that they are clang flags. For rustc, there is no such distinction to make (yet). Another option: * CFLAGS_AUTOFDO_CLANG * RUSTFLAGS_AUTOFDO_RUSTC Alice
On Fri, Mar 20, 2026 at 06:47:05AM +0000, Alice Ryhl wrote: > How about we just call them: > > * CFLAGS_AUTOFDO_CLANG > * RUSTFLAGS_AUTOFDO > > then? For cflags, clarify that they are clang flags. For rustc, there is > no such distinction to make (yet). Yes, that seems reasonable to me (although CFLAGS_AUTOFDO_CLANG is already the name so I assume you mean just keeping it as it is). > Another option: > * CFLAGS_AUTOFDO_CLANG > * RUSTFLAGS_AUTOFDO_RUSTC I don't see much of a reason to make this distinction until the rest of the kernel's Rust code can be built with a different Rust compiler. Cheers, Nathan
On Thu, Mar 19, 2026 at 8:09 PM Gary Guo <gary@garyguo.net> wrote:
>
> I don't know if there's an established practice on renaming CONFIG options when
> this sort thing happens though.
Generally, we try to keep users' configs working.
In the past, it was quite painful / pitfall-y to do so, so to make it
easier, the `transitional` keyword was added recently -- a couple
references:
Documentation/kbuild/kconfig-language.rst
f9afce4f32e9 ("kconfig: Add transitional symbol attribute for
migration support")
I hope that helps!
Cheers,
Miguel
© 2016 - 2026 Red Hat, Inc.