Message ID | 20201127083943.2666864-1-anders.roxell@linaro.org (mailing list archive) |
---|---|
State | Accepted |
Commit | ad4fddef5f2345aa9214e979febe2f47639c10d9 |
Headers | show |
Series | mips: fix Section mismatch in reference | expand |
On Fri, Nov 27, 2020 at 12:39 AM Anders Roxell <anders.roxell@linaro.org> wrote: > > When building mips tinyconfig with clang the following error show up: > > WARNING: modpost: vmlinux.o(.text+0x1940c): Section mismatch in reference from the function r4k_cache_init() to the function .init.text:loongson3_sc_init() > The function r4k_cache_init() references > the function __init loongson3_sc_init(). Looks like loongson2_sc_init() might also have the same problem? (Both loongson2_sc_init and loongson3_sc_init are called from non-__init setup_scache). Trying to pinpoint a Fixes tag is tricky, it looks like setup_scache used to be marked __init, then __cpuinit? > This is often because r4k_cache_init lacks a __init > annotation or the annotation of loongson3_sc_init is wrong. > > Remove marked __init from function loongson3_sc_init(), > mips_sc_probe_cm3(), and mips_sc_probe(). mips_sc_probe_cm3() is only called from mips_sc_probe() which is marked as __init. mips_sc_probe is only called from mips_sc_init, which is not marked __init. So the patch is fine (and thanks for sending it): Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> though it looks like it might be worthwhile for the MIPS maintainer or Loongson folks to see if they can lower the kernel image size in memory post init by possibly re-adding __init to setup_scache()/r4k_cache_init()/cpu_cache_init() and friends. > > Signed-off-by: Anders Roxell <anders.roxell@linaro.org> > --- > arch/mips/mm/c-r4k.c | 2 +- > arch/mips/mm/sc-mips.c | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c > index 99521764c75b..4f976d687ab0 100644 > --- a/arch/mips/mm/c-r4k.c > +++ b/arch/mips/mm/c-r4k.c > @@ -1609,7 +1609,7 @@ static void __init loongson2_sc_init(void) > c->options |= MIPS_CPU_INCLUSIVE_CACHES; > } > > -static void __init loongson3_sc_init(void) > +static void loongson3_sc_init(void) > { > struct cpuinfo_mips *c = ¤t_cpu_data; > unsigned int config2, lsize; > diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c > index dd0a5becaabd..06ec304ad4d1 100644 > --- a/arch/mips/mm/sc-mips.c > +++ b/arch/mips/mm/sc-mips.c > @@ -146,7 +146,7 @@ static inline int mips_sc_is_activated(struct cpuinfo_mips *c) > return 1; > } > > -static int __init mips_sc_probe_cm3(void) > +static int mips_sc_probe_cm3(void) > { > struct cpuinfo_mips *c = ¤t_cpu_data; > unsigned long cfg = read_gcr_l2_config(); > @@ -180,7 +180,7 @@ static int __init mips_sc_probe_cm3(void) > return 0; > } > > -static inline int __init mips_sc_probe(void) > +static inline int mips_sc_probe(void) > { > struct cpuinfo_mips *c = ¤t_cpu_data; > unsigned int config1, config2; > -- > 2.29.2 >
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 99521764c75b..4f976d687ab0 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c @@ -1609,7 +1609,7 @@ static void __init loongson2_sc_init(void) c->options |= MIPS_CPU_INCLUSIVE_CACHES; } -static void __init loongson3_sc_init(void) +static void loongson3_sc_init(void) { struct cpuinfo_mips *c = ¤t_cpu_data; unsigned int config2, lsize; diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c index dd0a5becaabd..06ec304ad4d1 100644 --- a/arch/mips/mm/sc-mips.c +++ b/arch/mips/mm/sc-mips.c @@ -146,7 +146,7 @@ static inline int mips_sc_is_activated(struct cpuinfo_mips *c) return 1; } -static int __init mips_sc_probe_cm3(void) +static int mips_sc_probe_cm3(void) { struct cpuinfo_mips *c = ¤t_cpu_data; unsigned long cfg = read_gcr_l2_config(); @@ -180,7 +180,7 @@ static int __init mips_sc_probe_cm3(void) return 0; } -static inline int __init mips_sc_probe(void) +static inline int mips_sc_probe(void) { struct cpuinfo_mips *c = ¤t_cpu_data; unsigned int config1, config2;
When building mips tinyconfig with clang the following error show up: WARNING: modpost: vmlinux.o(.text+0x1940c): Section mismatch in reference from the function r4k_cache_init() to the function .init.text:loongson3_sc_init() The function r4k_cache_init() references the function __init loongson3_sc_init(). This is often because r4k_cache_init lacks a __init annotation or the annotation of loongson3_sc_init is wrong. Remove marked __init from function loongson3_sc_init(), mips_sc_probe_cm3(), and mips_sc_probe(). Signed-off-by: Anders Roxell <anders.roxell@linaro.org> --- arch/mips/mm/c-r4k.c | 2 +- arch/mips/mm/sc-mips.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)