2022-05-30 18:46:39

by Pierre Gondois

[permalink] [raw]
Subject: [PATCH v2 0/1] cpufreq: CPPC: Fix unused-function warning

v2:
- Put the Energy Model related functions inside specific guards
instead of using the '__maybe_unused' flag.

A warning was reported when the cppc_cpufreq driver is built
with CONFIG_ENERGY_MODEL=n at:
https://lore.kernel.org/all/[email protected]/

The patch should be applied on top of:
https://lore.kernel.org/all/[email protected]/

Pierre Gondois (1):
cpufreq: CPPC: Fix unused-function warning

drivers/cpufreq/cppc_cpufreq.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)

--
2.25.1



2022-05-31 12:03:25

by Pierre Gondois

[permalink] [raw]
Subject: [PATCH -next v2 1/1] cpufreq: CPPC: Fix unused-function warning

Building the cppc_cpufreq driver with for arm64 with
CONFIG_ENERGY_MODEL=n triggers the following warnings:
drivers/cpufreq/cppc_cpufreq.c:550:12: error: ‘cppc_get_cpu_cost’ defined but not used
[-Werror=unused-function]
550 | static int cppc_get_cpu_cost(struct device *cpu_dev, unsigned long KHz,
| ^~~~~~~~~~~~~~~~~
drivers/cpufreq/cppc_cpufreq.c:481:12: error: ‘cppc_get_cpu_power’ defined but not used
[-Werror=unused-function]
481 | static int cppc_get_cpu_power(struct device *cpu_dev,
| ^~~~~~~~~~~~~~~~~~

Move the Energy Model related functions into specific guards.
This allows to fix the warning and prevent doing extra work
when the Energy Model is not present.

Fixes: 740fcdc2c20e ("cpufreq: CPPC: Register EM based on efficiency class information")
Reported-by: Shaokun Zhang <[email protected]>
Signed-off-by: Pierre Gondois <[email protected]>
---
drivers/cpufreq/cppc_cpufreq.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
index f0a8bb2c59e5..24eaf0ec344d 100644
--- a/drivers/cpufreq/cppc_cpufreq.c
+++ b/drivers/cpufreq/cppc_cpufreq.c
@@ -441,6 +441,14 @@ static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
}
return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
}
+#else
+static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
+{
+ return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
+}
+#endif
+
+#if defined(CONFIG_ARM64) && defined(CONFIG_ENERGY_MODEL)

static DEFINE_PER_CPU(unsigned int, efficiency_class);
static void cppc_cpufreq_register_em(struct cpufreq_policy *policy);
@@ -621,21 +629,12 @@ static void cppc_cpufreq_register_em(struct cpufreq_policy *policy)
}

#else
-
-static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
-{
- return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
-}
static int populate_efficiency_class(void)
{
return 0;
}
-static void cppc_cpufreq_register_em(struct cpufreq_policy *policy)
-{
-}
#endif

-
static struct cppc_cpudata *cppc_cpufreq_get_cpu_data(unsigned int cpu)
{
struct cppc_cpudata *cpu_data;
--
2.25.1


2022-05-31 18:03:38

by Zhangshaokun

[permalink] [raw]
Subject: Re: [PATCH -next v2 1/1] cpufreq: CPPC: Fix unused-function warning

Hi,

It works for me on compile when CONFIG_ENERGY_MODEL=n, please feel free to add:
Tested-by: Shaokun Zhang <[email protected]>

Thanks,
Shaokun

On 2022/5/30 18:04, Pierre Gondois wrote:
> Building the cppc_cpufreq driver with for arm64 with
> CONFIG_ENERGY_MODEL=n triggers the following warnings:
> drivers/cpufreq/cppc_cpufreq.c:550:12: error: ‘cppc_get_cpu_cost’ defined but not used
> [-Werror=unused-function]
> 550 | static int cppc_get_cpu_cost(struct device *cpu_dev, unsigned long KHz,
> | ^~~~~~~~~~~~~~~~~
> drivers/cpufreq/cppc_cpufreq.c:481:12: error: ‘cppc_get_cpu_power’ defined but not used
> [-Werror=unused-function]
> 481 | static int cppc_get_cpu_power(struct device *cpu_dev,
> | ^~~~~~~~~~~~~~~~~~
>
> Move the Energy Model related functions into specific guards.
> This allows to fix the warning and prevent doing extra work
> when the Energy Model is not present.
>
> Fixes: 740fcdc2c20e ("cpufreq: CPPC: Register EM based on efficiency class information")
> Reported-by: Shaokun Zhang <[email protected]>
> Signed-off-by: Pierre Gondois <[email protected]>
> ---
> drivers/cpufreq/cppc_cpufreq.c | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
> index f0a8bb2c59e5..24eaf0ec344d 100644
> --- a/drivers/cpufreq/cppc_cpufreq.c
> +++ b/drivers/cpufreq/cppc_cpufreq.c
> @@ -441,6 +441,14 @@ static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
> }
> return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
> }
> +#else
> +static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
> +{
> + return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
> +}
> +#endif
> +
> +#if defined(CONFIG_ARM64) && defined(CONFIG_ENERGY_MODEL)
>
> static DEFINE_PER_CPU(unsigned int, efficiency_class);
> static void cppc_cpufreq_register_em(struct cpufreq_policy *policy);
> @@ -621,21 +629,12 @@ static void cppc_cpufreq_register_em(struct cpufreq_policy *policy)
> }
>
> #else
> -
> -static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
> -{
> - return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
> -}
> static int populate_efficiency_class(void)
> {
> return 0;
> }
> -static void cppc_cpufreq_register_em(struct cpufreq_policy *policy)
> -{
> -}
> #endif
>
> -
> static struct cppc_cpudata *cppc_cpufreq_get_cpu_data(unsigned int cpu)
> {
> struct cppc_cpudata *cpu_data;
>

2022-06-01 09:00:13

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH -next v2 1/1] cpufreq: CPPC: Fix unused-function warning

On Mon, May 30, 2022 at 1:56 PM Shaokun Zhang
<[email protected]> wrote:
>
> Hi,
>
> It works for me on compile when CONFIG_ENERGY_MODEL=n, please feel free to add:
> Tested-by: Shaokun Zhang <[email protected]>

Applied, thanks!

> On 2022/5/30 18:04, Pierre Gondois wrote:
> > Building the cppc_cpufreq driver with for arm64 with
> > CONFIG_ENERGY_MODEL=n triggers the following warnings:
> > drivers/cpufreq/cppc_cpufreq.c:550:12: error: ‘cppc_get_cpu_cost’ defined but not used
> > [-Werror=unused-function]
> > 550 | static int cppc_get_cpu_cost(struct device *cpu_dev, unsigned long KHz,
> > | ^~~~~~~~~~~~~~~~~
> > drivers/cpufreq/cppc_cpufreq.c:481:12: error: ‘cppc_get_cpu_power’ defined but not used
> > [-Werror=unused-function]
> > 481 | static int cppc_get_cpu_power(struct device *cpu_dev,
> > | ^~~~~~~~~~~~~~~~~~
> >
> > Move the Energy Model related functions into specific guards.
> > This allows to fix the warning and prevent doing extra work
> > when the Energy Model is not present.
> >
> > Fixes: 740fcdc2c20e ("cpufreq: CPPC: Register EM based on efficiency class information")
> > Reported-by: Shaokun Zhang <[email protected]>
> > Signed-off-by: Pierre Gondois <[email protected]>
> > ---
> > drivers/cpufreq/cppc_cpufreq.c | 17 ++++++++---------
> > 1 file changed, 8 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
> > index f0a8bb2c59e5..24eaf0ec344d 100644
> > --- a/drivers/cpufreq/cppc_cpufreq.c
> > +++ b/drivers/cpufreq/cppc_cpufreq.c
> > @@ -441,6 +441,14 @@ static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
> > }
> > return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
> > }
> > +#else
> > +static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
> > +{
> > + return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
> > +}
> > +#endif
> > +
> > +#if defined(CONFIG_ARM64) && defined(CONFIG_ENERGY_MODEL)
> >
> > static DEFINE_PER_CPU(unsigned int, efficiency_class);
> > static void cppc_cpufreq_register_em(struct cpufreq_policy *policy);
> > @@ -621,21 +629,12 @@ static void cppc_cpufreq_register_em(struct cpufreq_policy *policy)
> > }
> >
> > #else
> > -
> > -static unsigned int cppc_cpufreq_get_transition_delay_us(unsigned int cpu)
> > -{
> > - return cppc_get_transition_latency(cpu) / NSEC_PER_USEC;
> > -}
> > static int populate_efficiency_class(void)
> > {
> > return 0;
> > }
> > -static void cppc_cpufreq_register_em(struct cpufreq_policy *policy)
> > -{
> > -}
> > #endif
> >
> > -
> > static struct cppc_cpudata *cppc_cpufreq_get_cpu_data(unsigned int cpu)
> > {
> > struct cppc_cpudata *cpu_data;
> >