2016-03-22 14:47:15

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH 0/4] ARM: cpuidle: use const and __initconst for cpuidle_ops

These trivial patches are similar as Masahiro posted in[1]. The main
purpose is let cpuidle_ops structure be constified and replace
"__initdata" with "__initconst".

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-August/365826.html

Jisheng Zhang (4):
ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
ARM: cpuidle: constify return value of arm_cpuidle_get_ops()
soc: qcom: spm: use const and __initconst for qcom_cpuidle_ops
drivers: firmware: psci: use const and __initconst for
psci_cpuidle_ops

arch/arm/include/asm/cpuidle.h | 2 +-
arch/arm/kernel/cpuidle.c | 6 +++---
drivers/firmware/psci.c | 2 +-
drivers/soc/qcom/spm.c | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)

--
2.8.0.rc3


2016-03-22 14:47:25

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH 2/4] ARM: cpuidle: constify return value of arm_cpuidle_get_ops()

arm_cpuidle_read_ops() just copies '*ops' to cpuidle_ops[cpu], so the
structure '*ops' is not modified at all.

The comment is also updated accordingly.

Signed-off-by: Jisheng Zhang <[email protected]>
---
arch/arm/kernel/cpuidle.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/kernel/cpuidle.c b/arch/arm/kernel/cpuidle.c
index 703926e..a44b268e 100644
--- a/arch/arm/kernel/cpuidle.c
+++ b/arch/arm/kernel/cpuidle.c
@@ -70,7 +70,7 @@ int arm_cpuidle_suspend(int index)
*
* Returns a struct cpuidle_ops pointer, NULL if not found.
*/
-static struct cpuidle_ops *__init arm_cpuidle_get_ops(const char *method)
+static const struct cpuidle_ops *__init arm_cpuidle_get_ops(const char *method)
{
struct of_cpuidle_method *m = __cpuidle_method_of_table;

@@ -88,7 +88,7 @@ static struct cpuidle_ops *__init arm_cpuidle_get_ops(const char *method)
*
* Get the method name defined in the 'enable-method' property, retrieve the
* associated cpuidle_ops and do a struct copy. This copy is needed because all
- * cpuidle_ops are tagged __initdata and will be unloaded after the init
+ * cpuidle_ops are tagged __initconst and will be unloaded after the init
* process.
*
* Return 0 on sucess, -ENOENT if no 'enable-method' is defined, -EOPNOTSUPP if
@@ -97,7 +97,7 @@ static struct cpuidle_ops *__init arm_cpuidle_get_ops(const char *method)
static int __init arm_cpuidle_read_ops(struct device_node *dn, int cpu)
{
const char *enable_method;
- struct cpuidle_ops *ops;
+ const struct cpuidle_ops *ops;

enable_method = of_get_property(dn, "enable-method", NULL);
if (!enable_method)
--
2.8.0.rc3

2016-03-22 14:47:38

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH 3/4] soc: qcom: spm: use const and __initconst for qcom_cpuidle_ops

The qcom_cpuidle_ops structures is not over-written, so add "const"
qualifier and replace __initdata with __initconst.

Signed-off-by: Jisheng Zhang <[email protected]>
---
drivers/soc/qcom/spm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soc/qcom/spm.c b/drivers/soc/qcom/spm.c
index 5548a31..1fcbb22 100644
--- a/drivers/soc/qcom/spm.c
+++ b/drivers/soc/qcom/spm.c
@@ -274,7 +274,7 @@ check_spm:
return per_cpu(cpu_spm_drv, cpu) ? 0 : -ENXIO;
}

-static struct cpuidle_ops qcom_cpuidle_ops __initdata = {
+static const struct cpuidle_ops qcom_cpuidle_ops __initconst = {
.suspend = qcom_idle_enter,
.init = qcom_cpuidle_init,
};
--
2.8.0.rc3

2016-03-22 14:48:00

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH 4/4] drivers: firmware: psci: use const and __initconst for psci_cpuidle_ops

The psci_cpuidle_ops structures is not over-written, so add "const"
qualifier and replace __initdata with __initconst.

Signed-off-by: Jisheng Zhang <[email protected]>
---
drivers/firmware/psci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 6d86881..7d52186 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -355,7 +355,7 @@ int psci_cpu_suspend_enter(unsigned long index)

/* ARM specific CPU idle operations */
#ifdef CONFIG_ARM
-static struct cpuidle_ops psci_cpuidle_ops __initdata = {
+static const struct cpuidle_ops psci_cpuidle_ops __initconst = {
.suspend = psci_cpu_suspend_enter,
.init = psci_dt_cpu_init_idle,
};
--
2.8.0.rc3

2016-03-22 14:47:49

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH 1/4] ARM: cpuidle: add const qualifier to cpuidle_ops member in structures

The core code does not modify smp_operations structures. To clarify it,
this patch adds 'const' qualifier to the 'ops' member of struct
of_cpuidle_method.

This change allows each arm cpuidle code to add 'const' qualifier to
its cpuidle_ops structure.

Signed-off-by: Jisheng Zhang <[email protected]>
---
arch/arm/include/asm/cpuidle.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/include/asm/cpuidle.h b/arch/arm/include/asm/cpuidle.h
index 3848259..baefe1d 100644
--- a/arch/arm/include/asm/cpuidle.h
+++ b/arch/arm/include/asm/cpuidle.h
@@ -36,7 +36,7 @@ struct cpuidle_ops {

struct of_cpuidle_method {
const char *method;
- struct cpuidle_ops *ops;
+ const struct cpuidle_ops *ops;
};

#define CPUIDLE_METHOD_OF_DECLARE(name, _method, _ops) \
--
2.8.0.rc3

2016-03-25 11:26:36

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH 0/4] ARM: cpuidle: use const and __initconst for cpuidle_ops

On 03/22/2016 03:42 PM, Jisheng Zhang wrote:
> These trivial patches are similar as Masahiro posted in[1]. The main
> purpose is let cpuidle_ops structure be constified and replace
> "__initdata" with "__initconst".
>
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-August/365826.html
>
> Jisheng Zhang (4):
> ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
> ARM: cpuidle: constify return value of arm_cpuidle_get_ops()
> soc: qcom: spm: use const and __initconst for qcom_cpuidle_ops
> drivers: firmware: psci: use const and __initconst for
> psci_cpuidle_ops
>
> arch/arm/include/asm/cpuidle.h | 2 +-
> arch/arm/kernel/cpuidle.c | 6 +++---
> drivers/firmware/psci.c | 2 +-
> drivers/soc/qcom/spm.c | 2 +-
> 4 files changed, 6 insertions(+), 6 deletions(-)

Sounds reasonable.

-- Daniel


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

2016-04-19 17:31:21

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH 0/4] ARM: cpuidle: use const and __initconst for cpuidle_ops

Hi Daniel,

On Fri, Mar 25, 2016 at 12:26:27PM +0100, Daniel Lezcano wrote:
> On 03/22/2016 03:42 PM, Jisheng Zhang wrote:
> >These trivial patches are similar as Masahiro posted in[1]. The main
> >purpose is let cpuidle_ops structure be constified and replace
> >"__initdata" with "__initconst".
> >
> >[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-August/365826.html
> >
> >Jisheng Zhang (4):
> > ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
> > ARM: cpuidle: constify return value of arm_cpuidle_get_ops()
> > soc: qcom: spm: use const and __initconst for qcom_cpuidle_ops
> > drivers: firmware: psci: use const and __initconst for
> > psci_cpuidle_ops
> >
> > arch/arm/include/asm/cpuidle.h | 2 +-
> > arch/arm/kernel/cpuidle.c | 6 +++---
> > drivers/firmware/psci.c | 2 +-
> > drivers/soc/qcom/spm.c | 2 +-
> > 4 files changed, 6 insertions(+), 6 deletions(-)
>
> Sounds reasonable.

Are you taking them ? I could send the last one but it would
make more sense for them to be part of the same series, I will
check they do not conflict with patches queued for PSCI.

Thanks,
Lorenzo

2016-04-19 17:34:06

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH 0/4] ARM: cpuidle: use const and __initconst for cpuidle_ops

On Tue, Apr 19, 2016 at 06:31:14PM +0100, Lorenzo Pieralisi wrote:
> Hi Daniel,
>
> On Fri, Mar 25, 2016 at 12:26:27PM +0100, Daniel Lezcano wrote:
> > On 03/22/2016 03:42 PM, Jisheng Zhang wrote:
> > >These trivial patches are similar as Masahiro posted in[1]. The main
> > >purpose is let cpuidle_ops structure be constified and replace
> > >"__initdata" with "__initconst".
> > >
> > >[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-August/365826.html
> > >
> > >Jisheng Zhang (4):
> > > ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
> > > ARM: cpuidle: constify return value of arm_cpuidle_get_ops()
> > > soc: qcom: spm: use const and __initconst for qcom_cpuidle_ops
> > > drivers: firmware: psci: use const and __initconst for
> > > psci_cpuidle_ops
> > >
> > > arch/arm/include/asm/cpuidle.h | 2 +-
> > > arch/arm/kernel/cpuidle.c | 6 +++---
> > > drivers/firmware/psci.c | 2 +-
> > > drivers/soc/qcom/spm.c | 2 +-
> > > 4 files changed, 6 insertions(+), 6 deletions(-)
> >
> > Sounds reasonable.
>
> Are you taking them ? I could send the last one but it would
> make more sense for them to be part of the same series, I will
> check they do not conflict with patches queued for PSCI.

Hi Lorenzo,

I can take the entire series if they are acked-by by the relevant people.

-- Daniel

2016-04-19 18:52:37

by Andy Gross

[permalink] [raw]
Subject: Re: [PATCH 3/4] soc: qcom: spm: use const and __initconst for qcom_cpuidle_ops

On Tue, Mar 22, 2016 at 10:42:42PM +0800, Jisheng Zhang wrote:
> The qcom_cpuidle_ops structures is not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
>
> Signed-off-by: Jisheng Zhang <[email protected]>

Acked-by: Andy Gross <[email protected]>

2016-04-20 05:01:48

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH 0/4] ARM: cpuidle: use const and __initconst for cpuidle_ops

On Tue, Apr 19, 2016 at 06:31:14PM +0100, Lorenzo Pieralisi wrote:
> Hi Daniel,
>
> On Fri, Mar 25, 2016 at 12:26:27PM +0100, Daniel Lezcano wrote:
> > On 03/22/2016 03:42 PM, Jisheng Zhang wrote:
> > >These trivial patches are similar as Masahiro posted in[1]. The main
> > >purpose is let cpuidle_ops structure be constified and replace
> > >"__initdata" with "__initconst".
> > >
> > >[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-August/365826.html
> > >
> > >Jisheng Zhang (4):
> > > ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
> > > ARM: cpuidle: constify return value of arm_cpuidle_get_ops()
> > > soc: qcom: spm: use const and __initconst for qcom_cpuidle_ops
> > > drivers: firmware: psci: use const and __initconst for
> > > psci_cpuidle_ops
> > >
> > > arch/arm/include/asm/cpuidle.h | 2 +-
> > > arch/arm/kernel/cpuidle.c | 6 +++---
> > > drivers/firmware/psci.c | 2 +-
> > > drivers/soc/qcom/spm.c | 2 +-
> > > 4 files changed, 6 insertions(+), 6 deletions(-)
> >
> > Sounds reasonable.
>
> Are you taking them ? I could send the last one but it would
> make more sense for them to be part of the same series, I will
> check they do not conflict with patches queued for PSCI.

Ok, let me know via an acked-by.

Thanks.

-- Daniel

2016-04-20 08:40:18

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH 4/4] drivers: firmware: psci: use const and __initconst for psci_cpuidle_ops

On Tue, Mar 22, 2016 at 10:42:43PM +0800, Jisheng Zhang wrote:
> The psci_cpuidle_ops structures is not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
>
> Signed-off-by: Jisheng Zhang <[email protected]>
> ---
> drivers/firmware/psci.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Acked-by: Lorenzo Pieralisi <[email protected]>

> diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
> index 6d86881..7d52186 100644
> --- a/drivers/firmware/psci.c
> +++ b/drivers/firmware/psci.c
> @@ -355,7 +355,7 @@ int psci_cpu_suspend_enter(unsigned long index)
>
> /* ARM specific CPU idle operations */
> #ifdef CONFIG_ARM
> -static struct cpuidle_ops psci_cpuidle_ops __initdata = {
> +static const struct cpuidle_ops psci_cpuidle_ops __initconst = {
> .suspend = psci_cpu_suspend_enter,
> .init = psci_dt_cpu_init_idle,
> };
> --
> 2.8.0.rc3
>