Hi Dave, On 2/19/25 07:28, Dave Martin wrote: > Hi, > > On Wed, Jan 22, 2025 at 02:20:09PM -0600, Babu Moger wrote: >> resctrl_late_init() has the __init attribute, but some of the functions >> called from it do not have the __init attribute. >> >> Add the __init attribute to all the functions in the call sequences to >> maintain consistency throughout. > > (BTW, did you just find these cases by inspection, or were you getting > build warnings? > > Even with CONFIG_DEBUG_SECTION_MISMATCH=y, I struggle to get build > warnings about section mismatches on inlined functions. Even building > with -fno-inline doesn't flag them all up (though I don't think this > suppresses all inlining). > > If you have a way of tracking these cases down automatically, I'd be > interested to know so that I can apply it elsewhere.) It is mostly by code inspection at this point. You can refer to this commit [1]. We used to see section mismatch warnings when non-init functions call __init functions. MODPOST Module.symvers WARNING: modpost: vmlinux: section mismatch in reference: rdt_get_mon_l3_config+0x2b5 (section: .text) -> rdt_cpu_has (section: .init.text) WARNING: modpost: vmlinux: section mismatch in reference: rdt_get_mon_l3_config+0x408 (section: .text) -> rdt_cpu_has (section: .init.text) 1. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.14-rc3&id=bd334c86b5d70e5d1c6169991802e62c828d6f38 > > Cheers > ---Dave > > >> >> Fixes: 6a445edce657 ("x86/intel_rdt/cqm: Add RDT monitoring initialization") >> Fixes: def10853930a ("x86/intel_rdt: Add two new resources for L2 Code and Data Prioritization (CDP)") >> Fixes: bd334c86b5d7 ("x86/resctrl: Add __init attribute to rdt_get_mon_l3_config()") >> Suggested-by: Reinette Chatre <reinette.chatre@xxxxxxxxx> >> Signed-off-by: Babu Moger <babu.moger@xxxxxxx> >> --- > > [...] > >> diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c >> index 3d1735ed8d1f..f0a331287979 100644 >> --- a/arch/x86/kernel/cpu/resctrl/core.c >> +++ b/arch/x86/kernel/cpu/resctrl/core.c >> @@ -145,7 +145,7 @@ u32 resctrl_arch_system_num_rmid_idx(void) >> * is always 20 on hsw server parts. The minimum cache bitmask length >> * allowed for HSW server is always 2 bits. Hardcode all of them. >> */ >> -static inline void cache_alloc_hsw_probe(void) >> +static inline __init void cache_alloc_hsw_probe(void) >> { >> struct rdt_hw_resource *hw_res = &rdt_resources_all[RDT_RESOURCE_L3]; >> struct rdt_resource *r = &hw_res->r_resctrl; >> @@ -277,7 +277,7 @@ static __init bool __rdt_get_mem_config_amd(struct rdt_resource *r) > > [...] > -- Thanks Babu Moger