* [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning @ 2018-09-19 18:22 Nathan Chancellor 2018-09-19 21:32 ` Viresh Kumar 2018-09-19 21:45 ` Nick Desaulniers 0 siblings, 2 replies; 9+ messages in thread From: Nathan Chancellor @ 2018-09-19 18:22 UTC (permalink / raw) To: Ilia Lin, Rafael J. Wysocki, Viresh Kumar Cc: linux-pm, linux-kernel, Nick Desaulniers, Nathan Chancellor WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from the function qcom_cpufreq_kryo_probe() to the function .init.text:qcom_cpufreq_kryo_get_msm_id() The function qcom_cpufreq_kryo_probe() references the function __init qcom_cpufreq_kryo_get_msm_id(). This is often because qcom_cpufreq_kryo_probe lacks a __init annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is no more mismatch warning. Fixes: 46e2856b8e18 ("cpufreq: Add Kryo CPU scaling driver") Reported-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> --- v1 -> v2: Add '__init' to qcom_cpufreq_kryo_probe instead of removing it from qcom_cpufreq_kryo_get_msm_id. drivers/cpufreq/qcom-cpufreq-kryo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/cpufreq/qcom-cpufreq-kryo.c b/drivers/cpufreq/qcom-cpufreq-kryo.c index a1830fa25fc5..e001ef8ea7de 100644 --- a/drivers/cpufreq/qcom-cpufreq-kryo.c +++ b/drivers/cpufreq/qcom-cpufreq-kryo.c @@ -73,7 +73,7 @@ static enum _msm8996_version __init qcom_cpufreq_kryo_get_msm_id(void) return version; } -static int qcom_cpufreq_kryo_probe(struct platform_device *pdev) +static int __init qcom_cpufreq_kryo_probe(struct platform_device *pdev) { struct opp_table *opp_tables[NR_CPUS] = {0}; enum _msm8996_version msm8996_version; -- 2.19.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 18:22 [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning Nathan Chancellor @ 2018-09-19 21:32 ` Viresh Kumar 2018-09-19 21:45 ` Nick Desaulniers 1 sibling, 0 replies; 9+ messages in thread From: Viresh Kumar @ 2018-09-19 21:32 UTC (permalink / raw) To: Nathan Chancellor Cc: Ilia Lin, Rafael J. Wysocki, linux-pm, linux-kernel, Nick Desaulniers On 19-09-18, 11:22, Nathan Chancellor wrote: > WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from > the function qcom_cpufreq_kryo_probe() to the function > .init.text:qcom_cpufreq_kryo_get_msm_id() > The function qcom_cpufreq_kryo_probe() references > the function __init qcom_cpufreq_kryo_get_msm_id(). > This is often because qcom_cpufreq_kryo_probe lacks a __init > annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. > > Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is > no more mismatch warning. > > Fixes: 46e2856b8e18 ("cpufreq: Add Kryo CPU scaling driver") > Reported-by: Nick Desaulniers <ndesaulniers@google.com> > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > --- > > v1 -> v2: > > Add '__init' to qcom_cpufreq_kryo_probe instead of removing it from > qcom_cpufreq_kryo_get_msm_id. > > drivers/cpufreq/qcom-cpufreq-kryo.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/cpufreq/qcom-cpufreq-kryo.c b/drivers/cpufreq/qcom-cpufreq-kryo.c > index a1830fa25fc5..e001ef8ea7de 100644 > --- a/drivers/cpufreq/qcom-cpufreq-kryo.c > +++ b/drivers/cpufreq/qcom-cpufreq-kryo.c > @@ -73,7 +73,7 @@ static enum _msm8996_version __init qcom_cpufreq_kryo_get_msm_id(void) > return version; > } > > -static int qcom_cpufreq_kryo_probe(struct platform_device *pdev) > +static int __init qcom_cpufreq_kryo_probe(struct platform_device *pdev) > { > struct opp_table *opp_tables[NR_CPUS] = {0}; > enum _msm8996_version msm8996_version; Acked-by: Viresh Kumar <viresh.kumar@linaro.org> -- viresh ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 18:22 [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning Nathan Chancellor 2018-09-19 21:32 ` Viresh Kumar @ 2018-09-19 21:45 ` Nick Desaulniers 2018-09-19 21:50 ` Viresh Kumar 2018-09-19 22:29 ` Nathan Chancellor 1 sibling, 2 replies; 9+ messages in thread From: Nick Desaulniers @ 2018-09-19 21:45 UTC (permalink / raw) To: Nathan Chancellor; +Cc: ilia.lin, rjw, viresh.kumar, linux-pm, LKML On Wed, Sep 19, 2018 at 11:22 AM Nathan Chancellor <natechancellor@gmail.com> wrote: > > WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from > the function qcom_cpufreq_kryo_probe() to the function > .init.text:qcom_cpufreq_kryo_get_msm_id() > The function qcom_cpufreq_kryo_probe() references > the function __init qcom_cpufreq_kryo_get_msm_id(). > This is often because qcom_cpufreq_kryo_probe lacks a __init > annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. > > Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is > no more mismatch warning. I wonder why this driver has an exit function marked __init rather than __exit? Does that mean it gets cleaned up after kernel init, and so on unloading of the driver, the kernel jumps to unmapped memory? Does this patch now produce a warning for `qcom_cpufreq_kryo_driver` referencing `qcom_cpufreq_kryo_probe`? > > Fixes: 46e2856b8e18 ("cpufreq: Add Kryo CPU scaling driver") > Reported-by: Nick Desaulniers <ndesaulniers@google.com> > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > --- > > v1 -> v2: > > Add '__init' to qcom_cpufreq_kryo_probe instead of removing it from > qcom_cpufreq_kryo_get_msm_id. > > drivers/cpufreq/qcom-cpufreq-kryo.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/cpufreq/qcom-cpufreq-kryo.c b/drivers/cpufreq/qcom-cpufreq-kryo.c > index a1830fa25fc5..e001ef8ea7de 100644 > --- a/drivers/cpufreq/qcom-cpufreq-kryo.c > +++ b/drivers/cpufreq/qcom-cpufreq-kryo.c > @@ -73,7 +73,7 @@ static enum _msm8996_version __init qcom_cpufreq_kryo_get_msm_id(void) > return version; > } > > -static int qcom_cpufreq_kryo_probe(struct platform_device *pdev) > +static int __init qcom_cpufreq_kryo_probe(struct platform_device *pdev) > { > struct opp_table *opp_tables[NR_CPUS] = {0}; > enum _msm8996_version msm8996_version; > -- > 2.19.0 > -- Thanks, ~Nick Desaulniers ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 21:45 ` Nick Desaulniers @ 2018-09-19 21:50 ` Viresh Kumar 2018-09-19 21:54 ` Viresh Kumar 2018-09-19 22:29 ` Nathan Chancellor 1 sibling, 1 reply; 9+ messages in thread From: Viresh Kumar @ 2018-09-19 21:50 UTC (permalink / raw) To: Nick Desaulniers; +Cc: Nathan Chancellor, ilia.lin, rjw, linux-pm, LKML On 19-09-18, 14:45, Nick Desaulniers wrote: > On Wed, Sep 19, 2018 at 11:22 AM Nathan Chancellor > <natechancellor@gmail.com> wrote: > > > > WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from > > the function qcom_cpufreq_kryo_probe() to the function > > .init.text:qcom_cpufreq_kryo_get_msm_id() > > The function qcom_cpufreq_kryo_probe() references > > the function __init qcom_cpufreq_kryo_get_msm_id(). > > This is often because qcom_cpufreq_kryo_probe lacks a __init > > annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. > > > > Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is > > no more mismatch warning. > > I wonder why this driver has an exit function marked __init rather > than __exit? I think it was just a mistake. > Does that mean it gets cleaned up after kernel init, and > so on unloading of the driver, the kernel jumps to unmapped memory? The __init/exit sections are only useful when the driver is builtin and so there is no unloading. Yeah, if you would have tried to call shutdown for the kernel, it may have crashed or something. I don't know. > Does this patch now produce a warning for `qcom_cpufreq_kryo_driver` > referencing `qcom_cpufreq_kryo_probe`? Why should it ? It doesn't though. -- viresh ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 21:50 ` Viresh Kumar @ 2018-09-19 21:54 ` Viresh Kumar 2018-09-19 22:45 ` Rafael J. Wysocki 0 siblings, 1 reply; 9+ messages in thread From: Viresh Kumar @ 2018-09-19 21:54 UTC (permalink / raw) To: Nick Desaulniers; +Cc: Nathan Chancellor, ilia.lin, rjw, linux-pm, LKML On 19-09-18, 14:50, Viresh Kumar wrote: > On 19-09-18, 14:45, Nick Desaulniers wrote: > > On Wed, Sep 19, 2018 at 11:22 AM Nathan Chancellor > > <natechancellor@gmail.com> wrote: > > > > > > WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from > > > the function qcom_cpufreq_kryo_probe() to the function > > > .init.text:qcom_cpufreq_kryo_get_msm_id() > > > The function qcom_cpufreq_kryo_probe() references > > > the function __init qcom_cpufreq_kryo_get_msm_id(). > > > This is often because qcom_cpufreq_kryo_probe lacks a __init > > > annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. > > > > > > Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is > > > no more mismatch warning. > > > > I wonder why this driver has an exit function marked __init rather > > than __exit? > > I think it was just a mistake. > > > Does that mean it gets cleaned up after kernel init, and > > so on unloading of the driver, the kernel jumps to unmapped memory? > > The __init/exit sections are only useful when the driver is builtin > and so there is no unloading. Yeah, if you would have tried to call > shutdown for the kernel, it may have crashed or something. I don't > know. > > > Does this patch now produce a warning for `qcom_cpufreq_kryo_driver` > > referencing `qcom_cpufreq_kryo_probe`? > > Why should it ? It doesn't though. I thought you replied to my commit where I marked the exit routine with __exit and realised just now that it wasn't the case. I haven't build-tested this thing, but the question still stands. Why should it ? -- viresh ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 21:54 ` Viresh Kumar @ 2018-09-19 22:45 ` Rafael J. Wysocki 2018-09-19 22:48 ` Nathan Chancellor 2018-09-20 16:02 ` Viresh Kumar 0 siblings, 2 replies; 9+ messages in thread From: Rafael J. Wysocki @ 2018-09-19 22:45 UTC (permalink / raw) To: Viresh Kumar Cc: ndesaulniers, natechancellor, ilia.lin, Rafael J. Wysocki, Linux PM, Linux Kernel Mailing List On Wed, Sep 19, 2018 at 11:54 PM Viresh Kumar <viresh.kumar@linaro.org> wrote: > > On 19-09-18, 14:50, Viresh Kumar wrote: > > On 19-09-18, 14:45, Nick Desaulniers wrote: > > > On Wed, Sep 19, 2018 at 11:22 AM Nathan Chancellor > > > <natechancellor@gmail.com> wrote: > > > > > > > > WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from > > > > the function qcom_cpufreq_kryo_probe() to the function > > > > .init.text:qcom_cpufreq_kryo_get_msm_id() > > > > The function qcom_cpufreq_kryo_probe() references > > > > the function __init qcom_cpufreq_kryo_get_msm_id(). > > > > This is often because qcom_cpufreq_kryo_probe lacks a __init > > > > annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. > > > > > > > > Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is > > > > no more mismatch warning. > > > > > > I wonder why this driver has an exit function marked __init rather > > > than __exit? > > > > I think it was just a mistake. > > > > > Does that mean it gets cleaned up after kernel init, and > > > so on unloading of the driver, the kernel jumps to unmapped memory? > > > > The __init/exit sections are only useful when the driver is builtin > > and so there is no unloading. Yeah, if you would have tried to call > > shutdown for the kernel, it may have crashed or something. I don't > > know. > > > > > Does this patch now produce a warning for `qcom_cpufreq_kryo_driver` > > > referencing `qcom_cpufreq_kryo_probe`? > > > > Why should it ? It doesn't though. > > I thought you replied to my commit where I marked the exit routine > with __exit and realised just now that it wasn't the case. I haven't > build-tested this thing, but the question still stands. Why should it > ? Because __init things go away at one point and calling them from the other sections is a bad idea. OTOH, __exit things are simply not needed in built-in drivers and they are never there if the driver is built-in, so calling them from the other sections is a bad idea too. Can you guys, please, prepare *one* patch fixing all of the __init/__exit annotations in this driver and post it? Thanks, Rafael ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 22:45 ` Rafael J. Wysocki @ 2018-09-19 22:48 ` Nathan Chancellor 2018-09-20 16:02 ` Viresh Kumar 1 sibling, 0 replies; 9+ messages in thread From: Nathan Chancellor @ 2018-09-19 22:48 UTC (permalink / raw) To: Rafael J. Wysocki Cc: Viresh Kumar, ndesaulniers, ilia.lin, Rafael J. Wysocki, Linux PM, Linux Kernel Mailing List On Thu, Sep 20, 2018 at 12:45:55AM +0200, Rafael J. Wysocki wrote: > On Wed, Sep 19, 2018 at 11:54 PM Viresh Kumar <viresh.kumar@linaro.org> wrote: > > > > On 19-09-18, 14:50, Viresh Kumar wrote: > > > On 19-09-18, 14:45, Nick Desaulniers wrote: > > > > On Wed, Sep 19, 2018 at 11:22 AM Nathan Chancellor > > > > <natechancellor@gmail.com> wrote: > > > > > > > > > > WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from > > > > > the function qcom_cpufreq_kryo_probe() to the function > > > > > .init.text:qcom_cpufreq_kryo_get_msm_id() > > > > > The function qcom_cpufreq_kryo_probe() references > > > > > the function __init qcom_cpufreq_kryo_get_msm_id(). > > > > > This is often because qcom_cpufreq_kryo_probe lacks a __init > > > > > annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. > > > > > > > > > > Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is > > > > > no more mismatch warning. > > > > > > > > I wonder why this driver has an exit function marked __init rather > > > > than __exit? > > > > > > I think it was just a mistake. > > > > > > > Does that mean it gets cleaned up after kernel init, and > > > > so on unloading of the driver, the kernel jumps to unmapped memory? > > > > > > The __init/exit sections are only useful when the driver is builtin > > > and so there is no unloading. Yeah, if you would have tried to call > > > shutdown for the kernel, it may have crashed or something. I don't > > > know. > > > > > > > Does this patch now produce a warning for `qcom_cpufreq_kryo_driver` > > > > referencing `qcom_cpufreq_kryo_probe`? > > > > > > Why should it ? It doesn't though. > > > > I thought you replied to my commit where I marked the exit routine > > with __exit and realised just now that it wasn't the case. I haven't > > build-tested this thing, but the question still stands. Why should it > > ? > > Because __init things go away at one point and calling them from the > other sections is a bad idea. OTOH, __exit things are simply not > needed in built-in drivers and they are never there if the driver is > built-in, so calling them from the other sections is a bad idea too. > > Can you guys, please, prepare *one* patch fixing all of the > __init/__exit annotations in this driver and post it? > > Thanks, > Rafael Hi Rafael, Yes, I will work on this and send out a v3 for review. Thanks, Nathan ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 22:45 ` Rafael J. Wysocki 2018-09-19 22:48 ` Nathan Chancellor @ 2018-09-20 16:02 ` Viresh Kumar 1 sibling, 0 replies; 9+ messages in thread From: Viresh Kumar @ 2018-09-20 16:02 UTC (permalink / raw) To: Rafael J. Wysocki Cc: ndesaulniers, natechancellor, ilia.lin, Rafael J. Wysocki, Linux PM, Linux Kernel Mailing List On 20-09-18, 00:45, Rafael J. Wysocki wrote: > Because __init things go away at one point and calling them from the > other sections is a bad idea. OTOH, __exit things are simply not > needed in built-in drivers and they are never there if the driver is > built-in, so calling them from the other sections is a bad idea too. I assumed that the driver is calling platform_driver_probe() and so probe() can be marked __init. But it doesn't do that to make deferred probing work. -- viresh ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning 2018-09-19 21:45 ` Nick Desaulniers 2018-09-19 21:50 ` Viresh Kumar @ 2018-09-19 22:29 ` Nathan Chancellor 1 sibling, 0 replies; 9+ messages in thread From: Nathan Chancellor @ 2018-09-19 22:29 UTC (permalink / raw) To: Nick Desaulniers; +Cc: ilia.lin, rjw, viresh.kumar, linux-pm, LKML On Wed, Sep 19, 2018 at 02:45:15PM -0700, Nick Desaulniers wrote: > On Wed, Sep 19, 2018 at 11:22 AM Nathan Chancellor > <natechancellor@gmail.com> wrote: > > > > WARNING: vmlinux.o(.text+0x8aa424): Section mismatch in reference from > > the function qcom_cpufreq_kryo_probe() to the function > > .init.text:qcom_cpufreq_kryo_get_msm_id() > > The function qcom_cpufreq_kryo_probe() references > > the function __init qcom_cpufreq_kryo_get_msm_id(). > > This is often because qcom_cpufreq_kryo_probe lacks a __init > > annotation or the annotation of qcom_cpufreq_kryo_get_msm_id is wrong. > > > > Add the '__init' annotation to qcom_cpufreq_kryo_probe so that there is > > no more mismatch warning. > > I wonder why this driver has an exit function marked __init rather > than __exit? Does that mean it gets cleaned up after kernel init, and > so on unloading of the driver, the kernel jumps to unmapped memory? > > Does this patch now produce a warning for `qcom_cpufreq_kryo_driver` > referencing `qcom_cpufreq_kryo_probe`? > Hmmm I could have sworn I built this before sending it, although my config might have been messed up but yes, I do see that warning. WARNING: vmlinux.o(.data+0x117618): Section mismatch in reference from the variable qcom_cpufreq_kryo_driver to the function .init.text:qcom_cpufreq_kryo_probe() The variable qcom_cpufreq_kryo_driver references the function __init qcom_cpufreq_kryo_probe() I suppose v1 might be the better option then as with the other patch, marking qcom_cpufreq_kryo_driver doesn't seem correct. I'm open to suggestions though. Nathan > > > > Fixes: 46e2856b8e18 ("cpufreq: Add Kryo CPU scaling driver") > > Reported-by: Nick Desaulniers <ndesaulniers@google.com> > > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > > --- > > > > v1 -> v2: > > > > Add '__init' to qcom_cpufreq_kryo_probe instead of removing it from > > qcom_cpufreq_kryo_get_msm_id. > > > > drivers/cpufreq/qcom-cpufreq-kryo.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/cpufreq/qcom-cpufreq-kryo.c b/drivers/cpufreq/qcom-cpufreq-kryo.c > > index a1830fa25fc5..e001ef8ea7de 100644 > > --- a/drivers/cpufreq/qcom-cpufreq-kryo.c > > +++ b/drivers/cpufreq/qcom-cpufreq-kryo.c > > @@ -73,7 +73,7 @@ static enum _msm8996_version __init qcom_cpufreq_kryo_get_msm_id(void) > > return version; > > } > > > > -static int qcom_cpufreq_kryo_probe(struct platform_device *pdev) > > +static int __init qcom_cpufreq_kryo_probe(struct platform_device *pdev) > > { > > struct opp_table *opp_tables[NR_CPUS] = {0}; > > enum _msm8996_version msm8996_version; > > -- > > 2.19.0 > > > > > -- > Thanks, > ~Nick Desaulniers ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-09-20 16:02 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-09-19 18:22 [PATCH v2] cpufreq: qcom-kryo: Fix section mismatch warning Nathan Chancellor 2018-09-19 21:32 ` Viresh Kumar 2018-09-19 21:45 ` Nick Desaulniers 2018-09-19 21:50 ` Viresh Kumar 2018-09-19 21:54 ` Viresh Kumar 2018-09-19 22:45 ` Rafael J. Wysocki 2018-09-19 22:48 ` Nathan Chancellor 2018-09-20 16:02 ` Viresh Kumar 2018-09-19 22:29 ` Nathan Chancellor
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).