linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] cpufreq: qcom-kryo: Fix section annotations
@ 2018-09-20  0:22 Nathan Chancellor
  2018-09-20  8:09 ` Rafael J. Wysocki
  2018-09-20 16:13 ` Viresh Kumar
  0 siblings, 2 replies; 3+ messages in thread
From: Nathan Chancellor @ 2018-09-20  0:22 UTC (permalink / raw)
  To: Ilia Lin, Rafael J. Wysocki, Viresh Kumar
  Cc: linux-pm, linux-kernel, Nick Desaulniers, Nathan Chancellor

There is currently a warning when building the Kryo cpufreq driver into
the kernel image:

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.

Remove the '__init' annotation from qcom_cpufreq_kryo_get_msm_id
so that there is no more mismatch warning.

Additionally, Nick noticed that the remove function was marked as
'__init' when it should really be marked as '__exit'.

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.

v2 -> v3:

Go back to removing '__init' from qcom_cpufreq_kryo_get_msm_id instead
of adding '__init' to qcom_cpufreq_kryo_probe, which causes another
mismatch warning and add the '__init' -> '__exit' conversion noticed by
Nick.

The alternative solution is adding '__init' to qcom_cpufreq_kryo_probe,
removing the probe definition from qcom_cpufreq_kryo_driver, then
changing platform_driver_register to platform_driver_probe in
qcom_cpufreq_kryo_init, like [1]. I don't know how that would perform
given that I don't have a way to test this device.

[1]: https://lore.kernel.org/lkml/20180919185341.31298-1-natechancellor@gmail.com/

 drivers/cpufreq/qcom-cpufreq-kryo.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/cpufreq/qcom-cpufreq-kryo.c b/drivers/cpufreq/qcom-cpufreq-kryo.c
index a1830fa25fc5..2a3675c24032 100644
--- a/drivers/cpufreq/qcom-cpufreq-kryo.c
+++ b/drivers/cpufreq/qcom-cpufreq-kryo.c
@@ -44,7 +44,7 @@ enum _msm8996_version {
 
 struct platform_device *cpufreq_dt_pdev, *kryo_cpufreq_pdev;
 
-static enum _msm8996_version __init qcom_cpufreq_kryo_get_msm_id(void)
+static enum _msm8996_version qcom_cpufreq_kryo_get_msm_id(void)
 {
 	size_t len;
 	u32 *msm_id;
@@ -222,7 +222,7 @@ static int __init qcom_cpufreq_kryo_init(void)
 }
 module_init(qcom_cpufreq_kryo_init);
 
-static void __init qcom_cpufreq_kryo_exit(void)
+static void __exit qcom_cpufreq_kryo_exit(void)
 {
 	platform_device_unregister(kryo_cpufreq_pdev);
 	platform_driver_unregister(&qcom_cpufreq_kryo_driver);
-- 
2.19.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v3] cpufreq: qcom-kryo: Fix section annotations
  2018-09-20  0:22 [PATCH v3] cpufreq: qcom-kryo: Fix section annotations Nathan Chancellor
@ 2018-09-20  8:09 ` Rafael J. Wysocki
  2018-09-20 16:13 ` Viresh Kumar
  1 sibling, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2018-09-20  8:09 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Ilia Lin, Viresh Kumar, linux-pm, linux-kernel, Nick Desaulniers

On Thursday, September 20, 2018 2:22:21 AM CEST Nathan Chancellor wrote:
> There is currently a warning when building the Kryo cpufreq driver into
> the kernel image:
> 
> 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.
> 
> Remove the '__init' annotation from qcom_cpufreq_kryo_get_msm_id
> so that there is no more mismatch warning.
> 
> Additionally, Nick noticed that the remove function was marked as
> '__init' when it should really be marked as '__exit'.
> 
> 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.
> 
> v2 -> v3:
> 
> Go back to removing '__init' from qcom_cpufreq_kryo_get_msm_id instead
> of adding '__init' to qcom_cpufreq_kryo_probe, which causes another
> mismatch warning and add the '__init' -> '__exit' conversion noticed by
> Nick.
> 
> The alternative solution is adding '__init' to qcom_cpufreq_kryo_probe,
> removing the probe definition from qcom_cpufreq_kryo_driver, then
> changing platform_driver_register to platform_driver_probe in
> qcom_cpufreq_kryo_init, like [1]. I don't know how that would perform
> given that I don't have a way to test this device.
> 
> [1]: https://lore.kernel.org/lkml/20180919185341.31298-1-natechancellor@gmail.com/
> 
>  drivers/cpufreq/qcom-cpufreq-kryo.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/cpufreq/qcom-cpufreq-kryo.c b/drivers/cpufreq/qcom-cpufreq-kryo.c
> index a1830fa25fc5..2a3675c24032 100644
> --- a/drivers/cpufreq/qcom-cpufreq-kryo.c
> +++ b/drivers/cpufreq/qcom-cpufreq-kryo.c
> @@ -44,7 +44,7 @@ enum _msm8996_version {
>  
>  struct platform_device *cpufreq_dt_pdev, *kryo_cpufreq_pdev;
>  
> -static enum _msm8996_version __init qcom_cpufreq_kryo_get_msm_id(void)
> +static enum _msm8996_version qcom_cpufreq_kryo_get_msm_id(void)
>  {
>  	size_t len;
>  	u32 *msm_id;
> @@ -222,7 +222,7 @@ static int __init qcom_cpufreq_kryo_init(void)
>  }
>  module_init(qcom_cpufreq_kryo_init);
>  
> -static void __init qcom_cpufreq_kryo_exit(void)
> +static void __exit qcom_cpufreq_kryo_exit(void)
>  {
>  	platform_device_unregister(kryo_cpufreq_pdev);
>  	platform_driver_unregister(&qcom_cpufreq_kryo_driver);
> 

OK, thanks!

I'll queue this up for 4.19-rc6 if there are no objections.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v3] cpufreq: qcom-kryo: Fix section annotations
  2018-09-20  0:22 [PATCH v3] cpufreq: qcom-kryo: Fix section annotations Nathan Chancellor
  2018-09-20  8:09 ` Rafael J. Wysocki
@ 2018-09-20 16:13 ` Viresh Kumar
  1 sibling, 0 replies; 3+ messages in thread
From: Viresh Kumar @ 2018-09-20 16:13 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Ilia Lin, Rafael J. Wysocki, linux-pm, linux-kernel, Nick Desaulniers

On 19-09-18, 17:22, Nathan Chancellor wrote:
> There is currently a warning when building the Kryo cpufreq driver into
> the kernel image:
> 
> 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.
> 
> Remove the '__init' annotation from qcom_cpufreq_kryo_get_msm_id
> so that there is no more mismatch warning.
> 
> Additionally, Nick noticed that the remove function was marked as
> '__init' when it should really be marked as '__exit'.

I know Rafael asked to merge the two patches into a single one, but I still
believe its the best to have two separate patches to fix these two separate
issues. For example, picking this patch for an earlier kernel may produce
conflicts because the exit code was written at a later point of time and also
that the below Fixes tag applies only to the first problem only. And the
individual patch for the exit problem is already on the list.

> Fixes: 46e2856b8e18 ("cpufreq: Add Kryo CPU scaling driver")
> Reported-by: Nick Desaulniers <ndesaulniers@google.com>
> Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>

Anyway I am fine if Rafael wants to pick it up this way only.

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-09-20 16:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-20  0:22 [PATCH v3] cpufreq: qcom-kryo: Fix section annotations Nathan Chancellor
2018-09-20  8:09 ` Rafael J. Wysocki
2018-09-20 16:13 ` Viresh Kumar

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).