arch/x86/kernel/cpu/resctrl/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
After a recent LLVM change [1] that deduces __cold on functions that
only call cold code (such as __init functions), there is a section
mismatch warning from __get_mem_config_intel(), which got moved to
.text.unlikely. as a result of that optimization:
WARNING: modpost: vmlinux: section mismatch in reference: __get_mem_config_intel+0x77 (section: .text.unlikely.) -> thread_throttle_mode_init (section: .init.text)
Mark __get_mem_config_intel() as __init as well since it is only called
from __init code, which clears up the warning.
While __rdt_get_mem_config_amd() does not exhibit a warning because it
does not call any __init code, it is a similar function that is only
called from __init code like __get_mem_config_intel(), so mark it __init
as well to keep the code symmetrical.
Link: https://github.com/llvm/llvm-project/commit/6b11573b8c5e3d36beee099dbe7347c2a007bf53 [1]
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
Changes in v3:
- Adjust subject to add () before get_mem_config to highlight it as part
of a function (Reinette).
- Carry forward Reinette's Reviewed-by.
- Link to v2: https://lore.kernel.org/r/20240913-x86-restctrl-get_mem_config_intel-init-v2-1-bf4b645f0246@kernel.org
Changes in v2:
- Move position of __init within definition of __get_mem_config_intel()
to better match coding style guidelines (Reinette).
- Apply __init to __rdt_get_mem_config_amd(), as it has the same issue
by inspection (Reinette). Adjust commit message to reflect this
change.
- Link to v1: https://lore.kernel.org/r/20240822-x86-restctrl-get_mem_config_intel-init-v1-1-8b0a68a8731a@kernel.org
---
arch/x86/kernel/cpu/resctrl/core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
index 1930fce9dfe96d5c323cb9000fb06149916a5a3c..59961618a02374a5b1639baa7034d05867884640 100644
--- a/arch/x86/kernel/cpu/resctrl/core.c
+++ b/arch/x86/kernel/cpu/resctrl/core.c
@@ -199,7 +199,7 @@ static inline bool rdt_get_mb_table(struct rdt_resource *r)
return false;
}
-static bool __get_mem_config_intel(struct rdt_resource *r)
+static __init bool __get_mem_config_intel(struct rdt_resource *r)
{
struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
union cpuid_0x10_3_eax eax;
@@ -233,7 +233,7 @@ static bool __get_mem_config_intel(struct rdt_resource *r)
return true;
}
-static bool __rdt_get_mem_config_amd(struct rdt_resource *r)
+static __init bool __rdt_get_mem_config_amd(struct rdt_resource *r)
{
struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
u32 eax, ebx, ecx, edx, subleaf;
---
base-commit: 7424fc6b86c8980a87169e005f5cd4438d18efe6
change-id: 20240822-x86-restctrl-get_mem_config_intel-init-3af02a5130ba
Best regards,
--
Nathan Chancellor <nathan@kernel.org>
On 9/17/24 9:02 AM, Nathan Chancellor wrote:
> After a recent LLVM change [1] that deduces __cold on functions that
> only call cold code (such as __init functions), there is a section
> mismatch warning from __get_mem_config_intel(), which got moved to
> .text.unlikely. as a result of that optimization:
>
> WARNING: modpost: vmlinux: section mismatch in reference: __get_mem_config_intel+0x77 (section: .text.unlikely.) -> thread_throttle_mode_init (section: .init.text)
>
> Mark __get_mem_config_intel() as __init as well since it is only called
> from __init code, which clears up the warning.
>
> While __rdt_get_mem_config_amd() does not exhibit a warning because it
> does not call any __init code, it is a similar function that is only
> called from __init code like __get_mem_config_intel(), so mark it __init
> as well to keep the code symmetrical.
>
> Link: https://github.com/llvm/llvm-project/commit/6b11573b8c5e3d36beee099dbe7347c2a007bf53 [1]
> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> ---
If there is a re-spin I think appropriate Fixes tags can be added:
Fixes: 05b93417ce5b ("x86/intel_rdt/mba: Add primary support for Memory Bandwidth Allocation (MBA)")
Fixes: 4d05bf71f157 ("x86/resctrl: Introduce AMD QOS feature")
I am not familiar with stable rules related to compiler impact but
this may fall into the "it bothers people" category of fixes so
a Cc: stable@vger.kernel.org sounds appropriate also.
Reinette
On Thu, Sep 19, 2024 at 02:15:34PM -0700, Reinette Chatre wrote:
>
>
> On 9/17/24 9:02 AM, Nathan Chancellor wrote:
> > After a recent LLVM change [1] that deduces __cold on functions that
> > only call cold code (such as __init functions), there is a section
> > mismatch warning from __get_mem_config_intel(), which got moved to
> > .text.unlikely. as a result of that optimization:
> >
> > WARNING: modpost: vmlinux: section mismatch in reference: __get_mem_config_intel+0x77 (section: .text.unlikely.) -> thread_throttle_mode_init (section: .init.text)
> >
> > Mark __get_mem_config_intel() as __init as well since it is only called
> > from __init code, which clears up the warning.
> >
> > While __rdt_get_mem_config_amd() does not exhibit a warning because it
> > does not call any __init code, it is a similar function that is only
> > called from __init code like __get_mem_config_intel(), so mark it __init
> > as well to keep the code symmetrical.
> >
> > Link: https://github.com/llvm/llvm-project/commit/6b11573b8c5e3d36beee099dbe7347c2a007bf53 [1]
> > Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
> > Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> > ---
>
> If there is a re-spin I think appropriate Fixes tags can be added:
> Fixes: 05b93417ce5b ("x86/intel_rdt/mba: Add primary support for Memory Bandwidth Allocation (MBA)")
> Fixes: 4d05bf71f157 ("x86/resctrl: Introduce AMD QOS feature")
>
> I am not familiar with stable rules related to compiler impact but
> this may fall into the "it bothers people" category of fixes so
> a Cc: stable@vger.kernel.org sounds appropriate also.
Yes, I think it would be reasonable to have Fixes and a Cc: stable since
this can turn fatal with CONFIG_SECTION_MISMATCH_WARN_ONLY=n (even if
there should be no real issue at run time because these functions are
only called from __init code).
I'll send a v4 upon request from whoever will apply this. Otherwise,
here is a copy and pasteable block:
Cc: stable@vger.kernel.org
Fixes: 05b93417ce5b ("x86/intel_rdt/mba: Add primary support for Memory Bandwidth Allocation (MBA)")
Fixes: 4d05bf71f157 ("x86/resctrl: Introduce AMD QOS feature")
Cheers,
Nathan
© 2016 - 2026 Red Hat, Inc.