[2/2] ARM: use const and __initconst for smp_operations
diff mbox

Message ID 1447551593-22246-3-git-send-email-yamada.masahiro@socionext.com
State New
Headers show

Commit Message

Masahiro Yamada Nov. 15, 2015, 1:39 a.m. UTC
These smp_operations structures are not over-written, so add "const"
qualifier and replace __initdata with __initconst.

Also, add "static" where it is possible.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
---

 arch/arm/common/mcpm_platsmp.c       | 2 +-
 arch/arm/include/asm/psci.h          | 2 +-
 arch/arm/kernel/psci_smp.c           | 2 +-
 arch/arm/mach-alpine/platsmp.c       | 2 +-
 arch/arm/mach-axxia/platsmp.c        | 2 +-
 arch/arm/mach-bcm/bcm63xx_smp.c      | 2 +-
 arch/arm/mach-bcm/kona_smp.c         | 2 +-
 arch/arm/mach-bcm/platsmp-brcmstb.c  | 2 +-
 arch/arm/mach-berlin/platsmp.c       | 2 +-
 arch/arm/mach-exynos/common.h        | 2 +-
 arch/arm/mach-exynos/platsmp.c       | 2 +-
 arch/arm/mach-hisi/platmcpm.c        | 2 +-
 arch/arm/mach-hisi/platsmp.c         | 6 +++---
 arch/arm/mach-imx/common.h           | 4 ++--
 arch/arm/mach-imx/platsmp.c          | 4 ++--
 arch/arm/mach-keystone/keystone.h    | 2 +-
 arch/arm/mach-keystone/platsmp.c     | 2 +-
 arch/arm/mach-mediatek/platsmp.c     | 4 ++--
 arch/arm/mach-mvebu/armada-370-xp.h  | 2 +-
 arch/arm/mach-mvebu/platsmp-a9.c     | 4 ++--
 arch/arm/mach-mvebu/platsmp.c        | 2 +-
 arch/arm/mach-omap2/common.h         | 2 +-
 arch/arm/mach-omap2/omap-smp.c       | 2 +-
 arch/arm/mach-prima2/common.h        | 2 +-
 arch/arm/mach-prima2/platsmp.c       | 2 +-
 arch/arm/mach-qcom/platsmp.c         | 6 +++---
 arch/arm/mach-realview/core.h        | 2 +-
 arch/arm/mach-realview/platsmp.c     | 2 +-
 arch/arm/mach-rockchip/platsmp.c     | 2 +-
 arch/arm/mach-shmobile/r8a7779.h     | 2 +-
 arch/arm/mach-shmobile/r8a7790.h     | 2 +-
 arch/arm/mach-shmobile/r8a7791.h     | 2 +-
 arch/arm/mach-shmobile/setup-emev2.c | 2 +-
 arch/arm/mach-shmobile/sh73a0.h      | 2 +-
 arch/arm/mach-shmobile/smp-emev2.c   | 2 +-
 arch/arm/mach-shmobile/smp-r8a7779.c | 2 +-
 arch/arm/mach-shmobile/smp-r8a7790.c | 2 +-
 arch/arm/mach-shmobile/smp-r8a7791.c | 2 +-
 arch/arm/mach-shmobile/smp-sh73a0.c  | 2 +-
 arch/arm/mach-socfpga/platsmp.c      | 4 ++--
 arch/arm/mach-spear/generic.h        | 2 +-
 arch/arm/mach-spear/platsmp.c        | 2 +-
 arch/arm/mach-sti/platsmp.c          | 2 +-
 arch/arm/mach-sti/smp.h              | 2 +-
 arch/arm/mach-sunxi/platsmp.c        | 4 ++--
 arch/arm/mach-tegra/common.h         | 2 +-
 arch/arm/mach-tegra/platsmp.c        | 2 +-
 arch/arm/mach-uniphier/platsmp.c     | 2 +-
 arch/arm/mach-ux500/platsmp.c        | 2 +-
 arch/arm/mach-vexpress/core.h        | 2 +-
 arch/arm/mach-vexpress/platsmp.c     | 2 +-
 arch/arm/mach-zx/platsmp.c           | 2 +-
 arch/arm/mach-zynq/common.h          | 2 +-
 arch/arm/mach-zynq/platsmp.c         | 2 +-
 54 files changed, 64 insertions(+), 64 deletions(-)

Comments

Stephen Boyd Nov. 18, 2015, 1:30 a.m. UTC | #1
On 11/15, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---

Acked-by: Stephen Boyd <sboyd@codeaurora.org> # qcom part
Patrice CHOTARD Nov. 18, 2015, 8:15 a.m. UTC | #2
Hi

On 11/15/2015 02:39 AM, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
>
> Also, add "static" where it is possible.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>

For STi part

Acked-by: Patrice Chotard <patrice.chotard@st.com>


> ---
>
>   arch/arm/common/mcpm_platsmp.c       | 2 +-
>   arch/arm/include/asm/psci.h          | 2 +-
>   arch/arm/kernel/psci_smp.c           | 2 +-
>   arch/arm/mach-alpine/platsmp.c       | 2 +-
>   arch/arm/mach-axxia/platsmp.c        | 2 +-
>   arch/arm/mach-bcm/bcm63xx_smp.c      | 2 +-
>   arch/arm/mach-bcm/kona_smp.c         | 2 +-
>   arch/arm/mach-bcm/platsmp-brcmstb.c  | 2 +-
>   arch/arm/mach-berlin/platsmp.c       | 2 +-
>   arch/arm/mach-exynos/common.h        | 2 +-
>   arch/arm/mach-exynos/platsmp.c       | 2 +-
>   arch/arm/mach-hisi/platmcpm.c        | 2 +-
>   arch/arm/mach-hisi/platsmp.c         | 6 +++---
>   arch/arm/mach-imx/common.h           | 4 ++--
>   arch/arm/mach-imx/platsmp.c          | 4 ++--
>   arch/arm/mach-keystone/keystone.h    | 2 +-
>   arch/arm/mach-keystone/platsmp.c     | 2 +-
>   arch/arm/mach-mediatek/platsmp.c     | 4 ++--
>   arch/arm/mach-mvebu/armada-370-xp.h  | 2 +-
>   arch/arm/mach-mvebu/platsmp-a9.c     | 4 ++--
>   arch/arm/mach-mvebu/platsmp.c        | 2 +-
>   arch/arm/mach-omap2/common.h         | 2 +-
>   arch/arm/mach-omap2/omap-smp.c       | 2 +-
>   arch/arm/mach-prima2/common.h        | 2 +-
>   arch/arm/mach-prima2/platsmp.c       | 2 +-
>   arch/arm/mach-qcom/platsmp.c         | 6 +++---
>   arch/arm/mach-realview/core.h        | 2 +-
>   arch/arm/mach-realview/platsmp.c     | 2 +-
>   arch/arm/mach-rockchip/platsmp.c     | 2 +-
>   arch/arm/mach-shmobile/r8a7779.h     | 2 +-
>   arch/arm/mach-shmobile/r8a7790.h     | 2 +-
>   arch/arm/mach-shmobile/r8a7791.h     | 2 +-
>   arch/arm/mach-shmobile/setup-emev2.c | 2 +-
>   arch/arm/mach-shmobile/sh73a0.h      | 2 +-
>   arch/arm/mach-shmobile/smp-emev2.c   | 2 +-
>   arch/arm/mach-shmobile/smp-r8a7779.c | 2 +-
>   arch/arm/mach-shmobile/smp-r8a7790.c | 2 +-
>   arch/arm/mach-shmobile/smp-r8a7791.c | 2 +-
>   arch/arm/mach-shmobile/smp-sh73a0.c  | 2 +-
>   arch/arm/mach-socfpga/platsmp.c      | 4 ++--
>   arch/arm/mach-spear/generic.h        | 2 +-
>   arch/arm/mach-spear/platsmp.c        | 2 +-
>   arch/arm/mach-sti/platsmp.c          | 2 +-
>   arch/arm/mach-sti/smp.h              | 2 +-
>   arch/arm/mach-sunxi/platsmp.c        | 4 ++--
>   arch/arm/mach-tegra/common.h         | 2 +-
>   arch/arm/mach-tegra/platsmp.c        | 2 +-
>   arch/arm/mach-uniphier/platsmp.c     | 2 +-
>   arch/arm/mach-ux500/platsmp.c        | 2 +-
>   arch/arm/mach-vexpress/core.h        | 2 +-
>   arch/arm/mach-vexpress/platsmp.c     | 2 +-
>   arch/arm/mach-zx/platsmp.c           | 2 +-
>   arch/arm/mach-zynq/common.h          | 2 +-
>   arch/arm/mach-zynq/platsmp.c         | 2 +-
>   54 files changed, 64 insertions(+), 64 deletions(-)
>
> diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c
> index 2b25b60..c773157 100644
> --- a/arch/arm/common/mcpm_platsmp.c
> +++ b/arch/arm/common/mcpm_platsmp.c
> @@ -83,7 +83,7 @@ static void mcpm_cpu_die(unsigned int cpu)
>   
>   #endif
>   
> -static struct smp_operations __initdata mcpm_smp_ops = {
> +static const struct smp_operations mcpm_smp_ops __initconst = {
>   	.smp_boot_secondary	= mcpm_boot_secondary,
>   	.smp_secondary_init	= mcpm_secondary_init,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
> index 68ee3ce..97735a8 100644
> --- a/arch/arm/include/asm/psci.h
> +++ b/arch/arm/include/asm/psci.h
> @@ -14,7 +14,7 @@
>   #ifndef __ASM_ARM_PSCI_H
>   #define __ASM_ARM_PSCI_H
>   
> -extern struct smp_operations psci_smp_ops;
> +extern const struct smp_operations psci_smp_ops;
>   
>   #ifdef CONFIG_ARM_PSCI
>   bool psci_smp_available(void);
> diff --git a/arch/arm/kernel/psci_smp.c b/arch/arm/kernel/psci_smp.c
> index 9d479b2..cb3fcae 100644
> --- a/arch/arm/kernel/psci_smp.c
> +++ b/arch/arm/kernel/psci_smp.c
> @@ -120,7 +120,7 @@ bool __init psci_smp_available(void)
>   	return (psci_ops.cpu_on != NULL);
>   }
>   
> -struct smp_operations __initdata psci_smp_ops = {
> +const struct smp_operations psci_smp_ops __initconst = {
>   	.smp_boot_secondary	= psci_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
>   	.cpu_disable		= psci_cpu_disable,
> diff --git a/arch/arm/mach-alpine/platsmp.c b/arch/arm/mach-alpine/platsmp.c
> index f78429f..dd77ea2 100644
> --- a/arch/arm/mach-alpine/platsmp.c
> +++ b/arch/arm/mach-alpine/platsmp.c
> @@ -42,7 +42,7 @@ static void __init alpine_smp_prepare_cpus(unsigned int max_cpus)
>   	alpine_cpu_pm_init();
>   }
>   
> -static struct smp_operations alpine_smp_ops __initdata = {
> +static const struct smp_operations alpine_smp_ops __initconst = {
>   	.smp_prepare_cpus	= alpine_smp_prepare_cpus,
>   	.smp_boot_secondary	= alpine_boot_secondary,
>   };
> diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
> index 959d4df..ffbd71d 100644
> --- a/arch/arm/mach-axxia/platsmp.c
> +++ b/arch/arm/mach-axxia/platsmp.c
> @@ -82,7 +82,7 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus)
>   	}
>   }
>   
> -static struct smp_operations axxia_smp_ops __initdata = {
> +static const struct smp_operations axxia_smp_ops __initconst = {
>   	.smp_prepare_cpus	= axxia_smp_prepare_cpus,
>   	.smp_boot_secondary	= axxia_boot_secondary,
>   };
> diff --git a/arch/arm/mach-bcm/bcm63xx_smp.c b/arch/arm/mach-bcm/bcm63xx_smp.c
> index 19be904..9b6727e 100644
> --- a/arch/arm/mach-bcm/bcm63xx_smp.c
> +++ b/arch/arm/mach-bcm/bcm63xx_smp.c
> @@ -161,7 +161,7 @@ static void __init bcm63138_smp_prepare_cpus(unsigned int max_cpus)
>   	}
>   }
>   
> -struct smp_operations bcm63138_smp_ops __initdata = {
> +static const struct smp_operations bcm63138_smp_ops __initconst = {
>   	.smp_prepare_cpus	= bcm63138_smp_prepare_cpus,
>   	.smp_boot_secondary	= bcm63138_smp_boot_secondary,
>   };
> diff --git a/arch/arm/mach-bcm/kona_smp.c b/arch/arm/mach-bcm/kona_smp.c
> index 66a0465..da8328b 100644
> --- a/arch/arm/mach-bcm/kona_smp.c
> +++ b/arch/arm/mach-bcm/kona_smp.c
> @@ -194,7 +194,7 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle)
>   	return -ENOSYS;
>   }
>   
> -static struct smp_operations bcm_smp_ops __initdata = {
> +static const struct smp_operations bcm_smp_ops __initconst = {
>   	.smp_prepare_cpus	= bcm_smp_prepare_cpus,
>   	.smp_boot_secondary	= bcm_boot_secondary,
>   };
> diff --git a/arch/arm/mach-bcm/platsmp-brcmstb.c b/arch/arm/mach-bcm/platsmp-brcmstb.c
> index 44d6bddf..40dc844 100644
> --- a/arch/arm/mach-bcm/platsmp-brcmstb.c
> +++ b/arch/arm/mach-bcm/platsmp-brcmstb.c
> @@ -356,7 +356,7 @@ static int brcmstb_boot_secondary(unsigned int cpu, struct task_struct *idle)
>   	return 0;
>   }
>   
> -static struct smp_operations brcmstb_smp_ops __initdata = {
> +static const struct smp_operations brcmstb_smp_ops __initconst = {
>   	.smp_prepare_cpus	= brcmstb_cpu_ctrl_setup,
>   	.smp_boot_secondary	= brcmstb_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-berlin/platsmp.c b/arch/arm/mach-berlin/platsmp.c
> index 405cd37..93f9068 100644
> --- a/arch/arm/mach-berlin/platsmp.c
> +++ b/arch/arm/mach-berlin/platsmp.c
> @@ -119,7 +119,7 @@ static int berlin_cpu_kill(unsigned int cpu)
>   }
>   #endif
>   
> -static struct smp_operations berlin_smp_ops __initdata = {
> +static const struct smp_operations berlin_smp_ops __initconst = {
>   	.smp_prepare_cpus	= berlin_smp_prepare_cpus,
>   	.smp_boot_secondary	= berlin_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
> index 1534925..e349a03 100644
> --- a/arch/arm/mach-exynos/common.h
> +++ b/arch/arm/mach-exynos/common.h
> @@ -149,7 +149,7 @@ static inline void exynos_pm_init(void) {}
>   extern void exynos_cpu_resume(void);
>   extern void exynos_cpu_resume_ns(void);
>   
> -extern struct smp_operations exynos_smp_ops;
> +extern const struct smp_operations exynos_smp_ops;
>   
>   extern void exynos_cpu_power_down(int cpu);
>   extern void exynos_cpu_power_up(int cpu);
> diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
> index 98a2c0c..5bd9559 100644
> --- a/arch/arm/mach-exynos/platsmp.c
> +++ b/arch/arm/mach-exynos/platsmp.c
> @@ -479,7 +479,7 @@ static void exynos_cpu_die(unsigned int cpu)
>   }
>   #endif /* CONFIG_HOTPLUG_CPU */
>   
> -struct smp_operations exynos_smp_ops __initdata = {
> +const struct smp_operations exynos_smp_ops __initconst = {
>   	.smp_init_cpus		= exynos_smp_init_cpus,
>   	.smp_prepare_cpus	= exynos_smp_prepare_cpus,
>   	.smp_secondary_init	= exynos_secondary_init,
> diff --git a/arch/arm/mach-hisi/platmcpm.c b/arch/arm/mach-hisi/platmcpm.c
> index b5f8f5f..4b653a8 100644
> --- a/arch/arm/mach-hisi/platmcpm.c
> +++ b/arch/arm/mach-hisi/platmcpm.c
> @@ -239,7 +239,7 @@ err:
>   }
>   #endif
>   
> -static struct smp_operations __initdata hip04_smp_ops = {
> +static const struct smp_operations hip04_smp_ops __initconst = {
>   	.smp_boot_secondary	= hip04_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
>   	.cpu_die		= hip04_cpu_die,
> diff --git a/arch/arm/mach-hisi/platsmp.c b/arch/arm/mach-hisi/platsmp.c
> index 3c5237d..47ed32c 100644
> --- a/arch/arm/mach-hisi/platsmp.c
> +++ b/arch/arm/mach-hisi/platsmp.c
> @@ -89,7 +89,7 @@ static int hi3xxx_boot_secondary(unsigned int cpu, struct task_struct *idle)
>   	return 0;
>   }
>   
> -static struct smp_operations hi3xxx_smp_ops __initdata = {
> +static const struct smp_operations hi3xxx_smp_ops __initconst = {
>   	.smp_prepare_cpus	= hi3xxx_smp_prepare_cpus,
>   	.smp_boot_secondary	= hi3xxx_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> @@ -126,7 +126,7 @@ static int hix5hd2_boot_secondary(unsigned int cpu, struct task_struct *idle)
>   }
>   
>   
> -static struct smp_operations hix5hd2_smp_ops __initdata = {
> +static const struct smp_operations hix5hd2_smp_ops __initconst = {
>   	.smp_prepare_cpus	= hisi_common_smp_prepare_cpus,
>   	.smp_boot_secondary	= hix5hd2_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> @@ -176,7 +176,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
>   	return 0;
>   }
>   
> -static struct smp_operations hip01_smp_ops __initdata = {
> +static const struct smp_operations hip01_smp_ops __initconst = {
>   	.smp_prepare_cpus       = hisi_common_smp_prepare_cpus,
>   	.smp_boot_secondary     = hip01_boot_secondary,
>   };
> diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
> index e2d5383..32b83f0 100644
> --- a/arch/arm/mach-imx/common.h
> +++ b/arch/arm/mach-imx/common.h
> @@ -153,7 +153,7 @@ void imx_init_l2cache(void);
>   static inline void imx_init_l2cache(void) {}
>   #endif
>   
> -extern struct smp_operations imx_smp_ops;
> -extern struct smp_operations ls1021a_smp_ops;
> +extern const struct smp_operations imx_smp_ops;
> +extern const struct smp_operations ls1021a_smp_ops;
>   
>   #endif
> diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c
> index 7f27001..711dbbd 100644
> --- a/arch/arm/mach-imx/platsmp.c
> +++ b/arch/arm/mach-imx/platsmp.c
> @@ -88,7 +88,7 @@ static void __init imx_smp_prepare_cpus(unsigned int max_cpus)
>   	sync_cache_w(&g_diag_reg);
>   }
>   
> -struct smp_operations  imx_smp_ops __initdata = {
> +const struct smp_operations imx_smp_ops __initconst = {
>   	.smp_init_cpus		= imx_smp_init_cpus,
>   	.smp_prepare_cpus	= imx_smp_prepare_cpus,
>   	.smp_boot_secondary	= imx_boot_secondary,
> @@ -123,7 +123,7 @@ static void __init ls1021a_smp_prepare_cpus(unsigned int max_cpus)
>   	iounmap(dcfg_base);
>   }
>   
> -struct smp_operations  ls1021a_smp_ops __initdata = {
> +const struct smp_operations ls1021a_smp_ops __initconst = {
>   	.smp_prepare_cpus	= ls1021a_smp_prepare_cpus,
>   	.smp_boot_secondary	= ls1021a_boot_secondary,
>   };
> diff --git a/arch/arm/mach-keystone/keystone.h b/arch/arm/mach-keystone/keystone.h
> index cd04a1c..33eaa03 100644
> --- a/arch/arm/mach-keystone/keystone.h
> +++ b/arch/arm/mach-keystone/keystone.h
> @@ -15,7 +15,7 @@
>   
>   #ifndef __ASSEMBLER__
>   
> -extern struct smp_operations keystone_smp_ops;
> +extern const struct smp_operations keystone_smp_ops;
>   extern void secondary_startup(void);
>   extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr);
>   extern int keystone_pm_runtime_init(void);
> diff --git a/arch/arm/mach-keystone/platsmp.c b/arch/arm/mach-keystone/platsmp.c
> index 4bbb184..5665276 100644
> --- a/arch/arm/mach-keystone/platsmp.c
> +++ b/arch/arm/mach-keystone/platsmp.c
> @@ -39,6 +39,6 @@ static int keystone_smp_boot_secondary(unsigned int cpu,
>   	return error;
>   }
>   
> -struct smp_operations keystone_smp_ops __initdata = {
> +const struct smp_operations keystone_smp_ops __initconst = {
>   	.smp_boot_secondary	= keystone_smp_boot_secondary,
>   };
> diff --git a/arch/arm/mach-mediatek/platsmp.c b/arch/arm/mach-mediatek/platsmp.c
> index 8141f3f..a1b07ee 100644
> --- a/arch/arm/mach-mediatek/platsmp.c
> +++ b/arch/arm/mach-mediatek/platsmp.c
> @@ -128,13 +128,13 @@ static void __init mtk_smp_prepare_cpus(unsigned int max_cpus)
>   	__mtk_smp_prepare_cpus(max_cpus, 0);
>   }
>   
> -static struct smp_operations mt81xx_tz_smp_ops __initdata = {
> +static const struct smp_operations mt81xx_tz_smp_ops __initconst = {
>   	.smp_prepare_cpus = mtk_tz_smp_prepare_cpus,
>   	.smp_boot_secondary = mtk_boot_secondary,
>   };
>   CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops);
>   
> -static struct smp_operations mt6589_smp_ops __initdata = {
> +static const struct smp_operations mt6589_smp_ops __initconst = {
>   	.smp_prepare_cpus = mtk_smp_prepare_cpus,
>   	.smp_boot_secondary = mtk_boot_secondary,
>   };
> diff --git a/arch/arm/mach-mvebu/armada-370-xp.h b/arch/arm/mach-mvebu/armada-370-xp.h
> index c55bbf8..09413b6 100644
> --- a/arch/arm/mach-mvebu/armada-370-xp.h
> +++ b/arch/arm/mach-mvebu/armada-370-xp.h
> @@ -17,7 +17,7 @@
>   
>   #ifdef CONFIG_SMP
>   void armada_xp_secondary_startup(void);
> -extern struct smp_operations armada_xp_smp_ops;
> +extern const struct smp_operations armada_xp_smp_ops;
>   #endif
>   
>   #endif /* __MACH_ARMADA_370_XP_H */
> diff --git a/arch/arm/mach-mvebu/platsmp-a9.c b/arch/arm/mach-mvebu/platsmp-a9.c
> index 3d50004..d715dec 100644
> --- a/arch/arm/mach-mvebu/platsmp-a9.c
> +++ b/arch/arm/mach-mvebu/platsmp-a9.c
> @@ -93,11 +93,11 @@ static int armada_38x_cpu_kill(unsigned int cpu)
>   }
>   #endif
>   
> -static struct smp_operations mvebu_cortex_a9_smp_ops __initdata = {
> +static const struct smp_operations mvebu_cortex_a9_smp_ops __initconst = {
>   	.smp_boot_secondary	= mvebu_cortex_a9_boot_secondary,
>   };
>   
> -static struct smp_operations armada_38x_smp_ops __initdata = {
> +static const struct smp_operations armada_38x_smp_ops __initconst = {
>   	.smp_boot_secondary	= mvebu_cortex_a9_boot_secondary,
>   	.smp_secondary_init     = armada_38x_secondary_init,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-mvebu/platsmp.c b/arch/arm/mach-mvebu/platsmp.c
> index 58cc8c1..f9597b7 100644
> --- a/arch/arm/mach-mvebu/platsmp.c
> +++ b/arch/arm/mach-mvebu/platsmp.c
> @@ -170,7 +170,7 @@ static int armada_xp_cpu_kill(unsigned int cpu)
>   }
>   #endif
>   
> -struct smp_operations armada_xp_smp_ops __initdata = {
> +const struct smp_operations armada_xp_smp_ops __initconst = {
>   	.smp_init_cpus		= armada_xp_smp_init_cpus,
>   	.smp_prepare_cpus	= armada_xp_smp_prepare_cpus,
>   	.smp_boot_secondary	= armada_xp_boot_secondary,
> diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
> index 0cba957..f7666b9 100644
> --- a/arch/arm/mach-omap2/common.h
> +++ b/arch/arm/mach-omap2/common.h
> @@ -270,7 +270,7 @@ extern u32 omap_read_auxcoreboot0(void);
>   
>   extern void omap4_cpu_die(unsigned int cpu);
>   
> -extern struct smp_operations omap4_smp_ops;
> +extern const struct smp_operations omap4_smp_ops;
>   
>   extern void omap5_secondary_startup(void);
>   extern void omap5_secondary_hyp_startup(void);
> diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
> index 5305ec7..ddcd1d2 100644
> --- a/arch/arm/mach-omap2/omap-smp.c
> +++ b/arch/arm/mach-omap2/omap-smp.c
> @@ -241,7 +241,7 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
>   
>   }
>   
> -struct smp_operations omap4_smp_ops __initdata = {
> +const struct smp_operations omap4_smp_ops __initconst = {
>   	.smp_init_cpus		= omap4_smp_init_cpus,
>   	.smp_prepare_cpus	= omap4_smp_prepare_cpus,
>   	.smp_secondary_init	= omap4_secondary_init,
> diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h
> index 3916a66..6d77b62 100644
> --- a/arch/arm/mach-prima2/common.h
> +++ b/arch/arm/mach-prima2/common.h
> @@ -15,7 +15,7 @@
>   #include <asm/mach/time.h>
>   #include <asm/exception.h>
>   
> -extern struct smp_operations   sirfsoc_smp_ops;
> +extern const struct smp_operations sirfsoc_smp_ops;
>   extern void sirfsoc_secondary_startup(void);
>   extern void sirfsoc_cpu_die(unsigned int cpu);
>   
> diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c
> index e46c910..0875b99 100644
> --- a/arch/arm/mach-prima2/platsmp.c
> +++ b/arch/arm/mach-prima2/platsmp.c
> @@ -112,7 +112,7 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle)
>   	return pen_release != -1 ? -ENOSYS : 0;
>   }
>   
> -struct smp_operations sirfsoc_smp_ops __initdata = {
> +const struct smp_operations sirfsoc_smp_ops __initconst = {
>   	.smp_secondary_init     = sirfsoc_secondary_init,
>   	.smp_boot_secondary     = sirfsoc_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-qcom/platsmp.c b/arch/arm/mach-qcom/platsmp.c
> index 9b00123..5494c9e 100644
> --- a/arch/arm/mach-qcom/platsmp.c
> +++ b/arch/arm/mach-qcom/platsmp.c
> @@ -332,7 +332,7 @@ static void __init qcom_smp_prepare_cpus(unsigned int max_cpus)
>   	}
>   }
>   
> -static struct smp_operations smp_msm8660_ops __initdata = {
> +static const struct smp_operations smp_msm8660_ops __initconst = {
>   	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
>   	.smp_secondary_init	= qcom_secondary_init,
>   	.smp_boot_secondary	= msm8660_boot_secondary,
> @@ -342,7 +342,7 @@ static struct smp_operations smp_msm8660_ops __initdata = {
>   };
>   CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops);
>   
> -static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
> +static const struct smp_operations qcom_smp_kpssv1_ops __initconst = {
>   	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
>   	.smp_secondary_init	= qcom_secondary_init,
>   	.smp_boot_secondary	= kpssv1_boot_secondary,
> @@ -352,7 +352,7 @@ static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
>   };
>   CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops);
>   
> -static struct smp_operations qcom_smp_kpssv2_ops __initdata = {
> +static const struct smp_operations qcom_smp_kpssv2_ops __initconst = {
>   	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
>   	.smp_secondary_init	= qcom_secondary_init,
>   	.smp_boot_secondary	= kpssv2_boot_secondary,
> diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
> index 868ece2..670ee0e 100644
> --- a/arch/arm/mach-realview/core.h
> +++ b/arch/arm/mach-realview/core.h
> @@ -54,7 +54,7 @@ extern int realview_usb_register(struct resource *res);
>   extern void realview_init_early(void);
>   extern void realview_fixup(struct tag *tags, char **from);
>   
> -extern struct smp_operations realview_smp_ops;
> +extern const struct smp_operations realview_smp_ops;
>   extern void realview_cpu_die(unsigned int cpu);
>   
>   #endif
> diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
> index 98e3052..dc29029 100644
> --- a/arch/arm/mach-realview/platsmp.c
> +++ b/arch/arm/mach-realview/platsmp.c
> @@ -75,7 +75,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus)
>   		     __io_address(REALVIEW_SYS_FLAGSSET));
>   }
>   
> -struct smp_operations realview_smp_ops __initdata = {
> +const struct smp_operations realview_smp_ops __initconst = {
>   	.smp_init_cpus		= realview_smp_init_cpus,
>   	.smp_prepare_cpus	= realview_smp_prepare_cpus,
>   	.smp_secondary_init	= versatile_secondary_init,
> diff --git a/arch/arm/mach-rockchip/platsmp.c b/arch/arm/mach-rockchip/platsmp.c
> index 3e7a4b7..938888f 100644
> --- a/arch/arm/mach-rockchip/platsmp.c
> +++ b/arch/arm/mach-rockchip/platsmp.c
> @@ -340,7 +340,7 @@ static void rockchip_cpu_die(unsigned int cpu)
>   }
>   #endif
>   
> -static struct smp_operations rockchip_smp_ops __initdata = {
> +static const struct smp_operations rockchip_smp_ops __initconst = {
>   	.smp_prepare_cpus	= rockchip_smp_prepare_cpus,
>   	.smp_boot_secondary	= rockchip_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/r8a7779.h b/arch/arm/mach-shmobile/r8a7779.h
> index e1aaa2e..2a5f773 100644
> --- a/arch/arm/mach-shmobile/r8a7779.h
> +++ b/arch/arm/mach-shmobile/r8a7779.h
> @@ -3,6 +3,6 @@
>   
>   extern void r8a7779_pm_init(void);
>   
> -extern struct smp_operations r8a7779_smp_ops;
> +extern const struct smp_operations r8a7779_smp_ops;
>   
>   #endif /* __ASM_R8A7779_H__ */
> diff --git a/arch/arm/mach-shmobile/r8a7790.h b/arch/arm/mach-shmobile/r8a7790.h
> index 1a46d02..136f345 100644
> --- a/arch/arm/mach-shmobile/r8a7790.h
> +++ b/arch/arm/mach-shmobile/r8a7790.h
> @@ -1,6 +1,6 @@
>   #ifndef __ASM_R8A7790_H__
>   #define __ASM_R8A7790_H__
>   
> -extern struct smp_operations r8a7790_smp_ops;
> +extern const struct smp_operations r8a7790_smp_ops;
>   
>   #endif /* __ASM_R8A7790_H__ */
> diff --git a/arch/arm/mach-shmobile/r8a7791.h b/arch/arm/mach-shmobile/r8a7791.h
> index 7ca0b7d..cf7a840 100644
> --- a/arch/arm/mach-shmobile/r8a7791.h
> +++ b/arch/arm/mach-shmobile/r8a7791.h
> @@ -1,6 +1,6 @@
>   #ifndef __ASM_R8A7791_H__
>   #define __ASM_R8A7791_H__
>   
> -extern struct smp_operations r8a7791_smp_ops;
> +extern const struct smp_operations r8a7791_smp_ops;
>   
>   #endif /* __ASM_R8A7791_H__ */
> diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c
> index 37f7b15..10b7cb5 100644
> --- a/arch/arm/mach-shmobile/setup-emev2.c
> +++ b/arch/arm/mach-shmobile/setup-emev2.c
> @@ -42,7 +42,7 @@ static const char *const emev2_boards_compat_dt[] __initconst = {
>   	NULL,
>   };
>   
> -extern struct smp_operations emev2_smp_ops;
> +extern const struct smp_operations emev2_smp_ops;
>   
>   DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")
>   	.smp		= smp_ops(emev2_smp_ops),
> diff --git a/arch/arm/mach-shmobile/sh73a0.h b/arch/arm/mach-shmobile/sh73a0.h
> index 3964680..50ef24f 100644
> --- a/arch/arm/mach-shmobile/sh73a0.h
> +++ b/arch/arm/mach-shmobile/sh73a0.h
> @@ -1,6 +1,6 @@
>   #ifndef __ASM_SH73A0_H__
>   #define __ASM_SH73A0_H__
>   
> -extern struct smp_operations sh73a0_smp_ops;
> +extern const struct smp_operations sh73a0_smp_ops;
>   
>   #endif /* __ASM_SH73A0_H__ */
> diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c
> index baff3b5..adbac69 100644
> --- a/arch/arm/mach-shmobile/smp-emev2.c
> +++ b/arch/arm/mach-shmobile/smp-emev2.c
> @@ -49,7 +49,7 @@ static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
>   	shmobile_smp_scu_prepare_cpus(max_cpus);
>   }
>   
> -struct smp_operations emev2_smp_ops __initdata = {
> +const struct smp_operations emev2_smp_ops __initconst = {
>   	.smp_prepare_cpus	= emev2_smp_prepare_cpus,
>   	.smp_boot_secondary	= emev2_boot_secondary,
>   };
> diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c
> index 353562b8..b854fe2 100644
> --- a/arch/arm/mach-shmobile/smp-r8a7779.c
> +++ b/arch/arm/mach-shmobile/smp-r8a7779.c
> @@ -117,7 +117,7 @@ static int r8a7779_cpu_kill(unsigned int cpu)
>   }
>   #endif /* CONFIG_HOTPLUG_CPU */
>   
> -struct smp_operations r8a7779_smp_ops  __initdata = {
> +const struct smp_operations r8a7779_smp_ops  __initconst = {
>   	.smp_prepare_cpus	= r8a7779_smp_prepare_cpus,
>   	.smp_boot_secondary	= r8a7779_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/smp-r8a7790.c b/arch/arm/mach-shmobile/smp-r8a7790.c
> index 4b33d43..f6426c6 100644
> --- a/arch/arm/mach-shmobile/smp-r8a7790.c
> +++ b/arch/arm/mach-shmobile/smp-r8a7790.c
> @@ -60,7 +60,7 @@ static void __init r8a7790_smp_prepare_cpus(unsigned int max_cpus)
>   	rcar_sysc_power_up(&r8a7790_ca7_scu);
>   }
>   
> -struct smp_operations r8a7790_smp_ops __initdata = {
> +const struct smp_operations r8a7790_smp_ops __initconst = {
>   	.smp_prepare_cpus	= r8a7790_smp_prepare_cpus,
>   	.smp_boot_secondary	= shmobile_smp_apmu_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/smp-r8a7791.c b/arch/arm/mach-shmobile/smp-r8a7791.c
> index b2508c0..2d6417a 100644
> --- a/arch/arm/mach-shmobile/smp-r8a7791.c
> +++ b/arch/arm/mach-shmobile/smp-r8a7791.c
> @@ -54,7 +54,7 @@ static int r8a7791_smp_boot_secondary(unsigned int cpu,
>   	return shmobile_smp_apmu_boot_secondary(cpu, idle);
>   }
>   
> -struct smp_operations r8a7791_smp_ops __initdata = {
> +const struct smp_operations r8a7791_smp_ops __initconst = {
>   	.smp_prepare_cpus	= r8a7791_smp_prepare_cpus,
>   	.smp_boot_secondary	= r8a7791_smp_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c
> index bc2824a..ee1a4b7 100644
> --- a/arch/arm/mach-shmobile/smp-sh73a0.c
> +++ b/arch/arm/mach-shmobile/smp-sh73a0.c
> @@ -56,7 +56,7 @@ static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus)
>   	shmobile_smp_scu_prepare_cpus(max_cpus);
>   }
>   
> -struct smp_operations sh73a0_smp_ops __initdata = {
> +const struct smp_operations sh73a0_smp_ops __initconst = {
>   	.smp_prepare_cpus	= sh73a0_smp_prepare_cpus,
>   	.smp_boot_secondary	= sh73a0_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c
> index 15c8ce8..cbb0a54 100644
> --- a/arch/arm/mach-socfpga/platsmp.c
> +++ b/arch/arm/mach-socfpga/platsmp.c
> @@ -117,7 +117,7 @@ static int socfpga_cpu_kill(unsigned int cpu)
>   	return 1;
>   }
>   
> -static struct smp_operations socfpga_smp_ops __initdata = {
> +static const struct smp_operations socfpga_smp_ops __initconst = {
>   	.smp_prepare_cpus	= socfpga_smp_prepare_cpus,
>   	.smp_boot_secondary	= socfpga_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> @@ -126,7 +126,7 @@ static struct smp_operations socfpga_smp_ops __initdata = {
>   #endif
>   };
>   
> -static struct smp_operations socfpga_a10_smp_ops __initdata = {
> +static const struct smp_operations socfpga_a10_smp_ops __initconst = {
>   	.smp_prepare_cpus	= socfpga_smp_prepare_cpus,
>   	.smp_boot_secondary	= socfpga_a10_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-spear/generic.h b/arch/arm/mach-spear/generic.h
> index 0664091..909b97c0 100644
> --- a/arch/arm/mach-spear/generic.h
> +++ b/arch/arm/mach-spear/generic.h
> @@ -39,7 +39,7 @@ void spear_restart(enum reboot_mode, const char *);
>   void spear13xx_secondary_startup(void);
>   void spear13xx_cpu_die(unsigned int cpu);
>   
> -extern struct smp_operations spear13xx_smp_ops;
> +extern const struct smp_operations spear13xx_smp_ops;
>   
>   #ifdef CONFIG_MACH_SPEAR1310
>   void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base);
> diff --git a/arch/arm/mach-spear/platsmp.c b/arch/arm/mach-spear/platsmp.c
> index fd42977..8d1e2d5 100644
> --- a/arch/arm/mach-spear/platsmp.c
> +++ b/arch/arm/mach-spear/platsmp.c
> @@ -120,7 +120,7 @@ static void __init spear13xx_smp_prepare_cpus(unsigned int max_cpus)
>   	__raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION);
>   }
>   
> -struct smp_operations spear13xx_smp_ops __initdata = {
> +const struct smp_operations spear13xx_smp_ops __initconst = {
>          .smp_init_cpus		= spear13xx_smp_init_cpus,
>          .smp_prepare_cpus	= spear13xx_smp_prepare_cpus,
>          .smp_secondary_init	= spear13xx_secondary_init,
> diff --git a/arch/arm/mach-sti/platsmp.c b/arch/arm/mach-sti/platsmp.c
> index c4ad6ea..ea5a227 100644
> --- a/arch/arm/mach-sti/platsmp.c
> +++ b/arch/arm/mach-sti/platsmp.c
> @@ -156,7 +156,7 @@ static void __init sti_smp_prepare_cpus(unsigned int max_cpus)
>   	}
>   }
>   
> -struct smp_operations __initdata sti_smp_ops = {
> +const struct smp_operations sti_smp_ops __initconst = {
>   	.smp_prepare_cpus	= sti_smp_prepare_cpus,
>   	.smp_secondary_init	= sti_secondary_init,
>   	.smp_boot_secondary	= sti_boot_secondary,
> diff --git a/arch/arm/mach-sti/smp.h b/arch/arm/mach-sti/smp.h
> index ae22707..d8a2f87 100644
> --- a/arch/arm/mach-sti/smp.h
> +++ b/arch/arm/mach-sti/smp.h
> @@ -12,7 +12,7 @@
>   #ifndef __MACH_STI_SMP_H
>   #define __MACH_STI_SMP_H
>   
> -extern struct smp_operations	sti_smp_ops;
> +extern const struct smp_operations sti_smp_ops;
>   
>   void sti_secondary_startup(void);
>   
> diff --git a/arch/arm/mach-sunxi/platsmp.c b/arch/arm/mach-sunxi/platsmp.c
> index e8483ec..6642267 100644
> --- a/arch/arm/mach-sunxi/platsmp.c
> +++ b/arch/arm/mach-sunxi/platsmp.c
> @@ -116,7 +116,7 @@ static int sun6i_smp_boot_secondary(unsigned int cpu,
>   	return 0;
>   }
>   
> -static struct smp_operations sun6i_smp_ops __initdata = {
> +static const struct smp_operations sun6i_smp_ops __initconst = {
>   	.smp_prepare_cpus	= sun6i_smp_prepare_cpus,
>   	.smp_boot_secondary	= sun6i_smp_boot_secondary,
>   };
> @@ -185,7 +185,7 @@ static int sun8i_smp_boot_secondary(unsigned int cpu,
>   	return 0;
>   }
>   
> -struct smp_operations sun8i_smp_ops __initdata = {
> +static const struct smp_operations sun8i_smp_ops __initconst = {
>   	.smp_prepare_cpus	= sun8i_smp_prepare_cpus,
>   	.smp_boot_secondary	= sun8i_smp_boot_secondary,
>   };
> diff --git a/arch/arm/mach-tegra/common.h b/arch/arm/mach-tegra/common.h
> index 5900cc4..1f6fb80 100644
> --- a/arch/arm/mach-tegra/common.h
> +++ b/arch/arm/mach-tegra/common.h
> @@ -1,4 +1,4 @@
> -extern struct smp_operations tegra_smp_ops;
> +extern const struct smp_operations tegra_smp_ops;
>   
>   extern int tegra_cpu_kill(unsigned int cpu);
>   extern void tegra_cpu_die(unsigned int cpu);
> diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
> index b450866..f3f61db 100644
> --- a/arch/arm/mach-tegra/platsmp.c
> +++ b/arch/arm/mach-tegra/platsmp.c
> @@ -192,7 +192,7 @@ static void __init tegra_smp_prepare_cpus(unsigned int max_cpus)
>   		scu_enable(IO_ADDRESS(scu_a9_get_base()));
>   }
>   
> -struct smp_operations tegra_smp_ops __initdata = {
> +const struct smp_operations tegra_smp_ops __initconst = {
>   	.smp_prepare_cpus	= tegra_smp_prepare_cpus,
>   	.smp_secondary_init	= tegra_secondary_init,
>   	.smp_boot_secondary	= tegra_boot_secondary,
> diff --git a/arch/arm/mach-uniphier/platsmp.c b/arch/arm/mach-uniphier/platsmp.c
> index f057766..e1cfc1d 100644
> --- a/arch/arm/mach-uniphier/platsmp.c
> +++ b/arch/arm/mach-uniphier/platsmp.c
> @@ -201,7 +201,7 @@ static int __init uniphier_smp_boot_secondary(unsigned int cpu,
>   	return 0;
>   }
>   
> -static struct smp_operations uniphier_smp_ops __initdata = {
> +static const struct smp_operations uniphier_smp_ops __initconst = {
>   	.smp_prepare_cpus	= uniphier_smp_prepare_cpus,
>   	.smp_boot_secondary	= uniphier_smp_boot_secondary,
>   };
> diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
> index 70766b96..88b8ab4 100644
> --- a/arch/arm/mach-ux500/platsmp.c
> +++ b/arch/arm/mach-ux500/platsmp.c
> @@ -98,7 +98,7 @@ static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle)
>   	return 0;
>   }
>   
> -struct smp_operations ux500_smp_ops __initdata = {
> +static const struct smp_operations ux500_smp_ops __initconst = {
>   	.smp_prepare_cpus	= ux500_smp_prepare_cpus,
>   	.smp_boot_secondary	= ux500_boot_secondary,
>   #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h
> index 2a11d3a..a162ab4 100644
> --- a/arch/arm/mach-vexpress/core.h
> +++ b/arch/arm/mach-vexpress/core.h
> @@ -1,5 +1,5 @@
>   bool vexpress_smp_init_ops(void);
>   
> -extern struct smp_operations	vexpress_smp_dt_ops;
> +extern const struct smp_operations vexpress_smp_dt_ops;
>   
>   extern void vexpress_cpu_die(unsigned int cpu);
> diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c
> index 83188cf..8b8d072 100644
> --- a/arch/arm/mach-vexpress/platsmp.c
> +++ b/arch/arm/mach-vexpress/platsmp.c
> @@ -64,7 +64,7 @@ static void __init vexpress_smp_dt_prepare_cpus(unsigned int max_cpus)
>   	vexpress_flags_set(virt_to_phys(versatile_secondary_startup));
>   }
>   
> -struct smp_operations __initdata vexpress_smp_dt_ops = {
> +const struct smp_operations vexpress_smp_dt_ops __initconst = {
>   	.smp_prepare_cpus	= vexpress_smp_dt_prepare_cpus,
>   	.smp_secondary_init	= versatile_secondary_init,
>   	.smp_boot_secondary	= versatile_boot_secondary,
> diff --git a/arch/arm/mach-zx/platsmp.c b/arch/arm/mach-zx/platsmp.c
> index a369398..0297f92 100644
> --- a/arch/arm/mach-zx/platsmp.c
> +++ b/arch/arm/mach-zx/platsmp.c
> @@ -176,7 +176,7 @@ static void zx_secondary_init(unsigned int cpu)
>   	scu_power_mode(scu_base, SCU_PM_NORMAL);
>   }
>   
> -struct smp_operations zx_smp_ops __initdata = {
> +static const struct smp_operations zx_smp_ops __initconst = {
>   	.smp_prepare_cpus	= zx_smp_prepare_cpus,
>   	.smp_secondary_init	= zx_secondary_init,
>   	.smp_boot_secondary	= zx_boot_secondary,
> diff --git a/arch/arm/mach-zynq/common.h b/arch/arm/mach-zynq/common.h
> index 79cda2e..e771933 100644
> --- a/arch/arm/mach-zynq/common.h
> +++ b/arch/arm/mach-zynq/common.h
> @@ -30,7 +30,7 @@ extern char zynq_secondary_trampoline;
>   extern char zynq_secondary_trampoline_jump;
>   extern char zynq_secondary_trampoline_end;
>   extern int zynq_cpun_start(u32 address, int cpu);
> -extern struct smp_operations zynq_smp_ops __initdata;
> +extern const struct smp_operations zynq_smp_ops;
>   #endif
>   
>   extern void __iomem *zynq_scu_base;
> diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c
> index f66816c..7cd9865 100644
> --- a/arch/arm/mach-zynq/platsmp.c
> +++ b/arch/arm/mach-zynq/platsmp.c
> @@ -157,7 +157,7 @@ static void zynq_cpu_die(unsigned int cpu)
>   }
>   #endif
>   
> -struct smp_operations zynq_smp_ops __initdata = {
> +const struct smp_operations zynq_smp_ops __initconst = {
>   	.smp_init_cpus		= zynq_smp_init_cpus,
>   	.smp_prepare_cpus	= zynq_smp_prepare_cpus,
>   	.smp_boot_secondary	= zynq_boot_secondary,
Heiko Stuebner Nov. 18, 2015, 11:22 a.m. UTC | #3
Am Sonntag, 15. November 2015, 10:39:53 schrieb Masahiro Yamada:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---
> 

>  arch/arm/mach-rockchip/platsmp.c     | 2 +-

For the Rockchip-part

Acked-by: Heiko Stuebner <heiko@sntech.de>
Wei Xu Nov. 19, 2015, 4:52 p.m. UTC | #4
Hi Masahiro,

On 15/11/2015 01:39, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---
> 
>  arch/arm/mach-hisi/platmcpm.c        | 2 +-
>  arch/arm/mach-hisi/platsmp.c         | 6 +++---


Thanks!
For the Hisilicon part,
Acked-by: Wei Xu <xuwei5@hisilicon.com>

Best Regards,
Wei
Florian Fainelli Nov. 19, 2015, 7:16 p.m. UTC | #5
On 14/11/15 17:39, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---

>  arch/arm/mach-bcm/bcm63xx_smp.c      | 2 +-
>  arch/arm/mach-bcm/kona_smp.c         | 2 +-
>  arch/arm/mach-bcm/platsmp-brcmstb.c  | 2 +-

> -struct smp_operations bcm63138_smp_ops __initdata = {
> +static const struct smp_operations bcm63138_smp_ops __initconst = {
>  	.smp_prepare_cpus	= bcm63138_smp_prepare_cpus,
>  	.smp_boot_secondary	= bcm63138_smp_boot_secondary,
>  };
> diff --git a/arch/arm/mach-bcm/kona_smp.c b/arch/arm/mach-bcm/kona_smp.c
> index 66a0465..da8328b 100644
> --- a/arch/arm/mach-bcm/kona_smp.c
> +++ b/arch/arm/mach-bcm/kona_smp.c
> @@ -194,7 +194,7 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return -ENOSYS;
>  }
>  
> -static struct smp_operations bcm_smp_ops __initdata = {
> +static const struct smp_operations bcm_smp_ops __initconst = {
>  	.smp_prepare_cpus	= bcm_smp_prepare_cpus,
>  	.smp_boot_secondary	= bcm_boot_secondary,
>  };
> diff --git a/arch/arm/mach-bcm/platsmp-brcmstb.c b/arch/arm/mach-bcm/platsmp-brcmstb.c
> index 44d6bddf..40dc844 100644
> --- a/arch/arm/mach-bcm/platsmp-brcmstb.c
> +++ b/arch/arm/mach-bcm/platsmp-brcmstb.c
> @@ -356,7 +356,7 @@ static int brcmstb_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return 0;
>  }
>  
> -static struct smp_operations brcmstb_smp_ops __initdata = {
> +static const struct smp_operations brcmstb_smp_ops __initconst = {
>  	.smp_prepare_cpus	= brcmstb_cpu_ctrl_setup,
>  	.smp_boot_secondary	= brcmstb_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU

For the Broadcom SoCs:

Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Gregory CLEMENT Nov. 23, 2015, 5:02 p.m. UTC | #6
Hi Masahiro Yamada,
 
 On dim., nov. 15 2015, Masahiro Yamada <yamada.masahiro@socionext.com> wrote:

> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
>
> Also, add "static" where it is possible.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---
>

>  arch/arm/mach-mvebu/armada-370-xp.h  | 2 +-
>  arch/arm/mach-mvebu/platsmp-a9.c     | 4 ++--
>  arch/arm/mach-mvebu/platsmp.c        | 2 +-

For mvebu:
Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>

Thanks,

Gregory
dinguyen@opensource.altera.com Nov. 23, 2015, 8:33 p.m. UTC | #7
On 11/14/2015 07:39 PM, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---

>  arch/arm/mach-socfpga/platsmp.c      | 4 ++--

Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>

Thanks,
Dinh
Shawn Guo Nov. 24, 2015, 8:56 a.m. UTC | #8
On Sun, Nov 15, 2015 at 10:39:53AM +0900, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---
...
>  arch/arm/mach-imx/common.h           | 4 ++--
>  arch/arm/mach-imx/platsmp.c          | 4 ++--

Acked-by: Shawn Guo <shawnguo@kernel.org>
Matthias Brugger Nov. 24, 2015, 9:25 a.m. UTC | #9
On 15/11/15 02:39, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
>
> Also, add "static" where it is possible.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---
>

[...]

>   arch/arm/mach-mediatek/platsmp.c     | 4 ++--

For mediatek:
Acked-by: Matthias Brugger <matthias.bgg@gmail.com>
Thierry Reding Nov. 24, 2015, 3:40 p.m. UTC | #10
On Sun, Nov 15, 2015 at 10:39:53AM +0900, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---
[...]
>  arch/arm/mach-tegra/common.h         | 2 +-
>  arch/arm/mach-tegra/platsmp.c        | 2 +-

Acked-by: Thierry Reding <treding@nvidia.com>
Nicolas Pitre Nov. 24, 2015, 6:19 p.m. UTC | #11
On Sun, 15 Nov 2015, Masahiro Yamada wrote:

> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---

Tested with LTO which is rather picky about those things.

Acked-by: Nicolas Pitre <nico@linaro.org>

>  arch/arm/common/mcpm_platsmp.c       | 2 +-
>  arch/arm/include/asm/psci.h          | 2 +-
>  arch/arm/kernel/psci_smp.c           | 2 +-
>  arch/arm/mach-alpine/platsmp.c       | 2 +-
>  arch/arm/mach-axxia/platsmp.c        | 2 +-
>  arch/arm/mach-bcm/bcm63xx_smp.c      | 2 +-
>  arch/arm/mach-bcm/kona_smp.c         | 2 +-
>  arch/arm/mach-bcm/platsmp-brcmstb.c  | 2 +-
>  arch/arm/mach-berlin/platsmp.c       | 2 +-
>  arch/arm/mach-exynos/common.h        | 2 +-
>  arch/arm/mach-exynos/platsmp.c       | 2 +-
>  arch/arm/mach-hisi/platmcpm.c        | 2 +-
>  arch/arm/mach-hisi/platsmp.c         | 6 +++---
>  arch/arm/mach-imx/common.h           | 4 ++--
>  arch/arm/mach-imx/platsmp.c          | 4 ++--
>  arch/arm/mach-keystone/keystone.h    | 2 +-
>  arch/arm/mach-keystone/platsmp.c     | 2 +-
>  arch/arm/mach-mediatek/platsmp.c     | 4 ++--
>  arch/arm/mach-mvebu/armada-370-xp.h  | 2 +-
>  arch/arm/mach-mvebu/platsmp-a9.c     | 4 ++--
>  arch/arm/mach-mvebu/platsmp.c        | 2 +-
>  arch/arm/mach-omap2/common.h         | 2 +-
>  arch/arm/mach-omap2/omap-smp.c       | 2 +-
>  arch/arm/mach-prima2/common.h        | 2 +-
>  arch/arm/mach-prima2/platsmp.c       | 2 +-
>  arch/arm/mach-qcom/platsmp.c         | 6 +++---
>  arch/arm/mach-realview/core.h        | 2 +-
>  arch/arm/mach-realview/platsmp.c     | 2 +-
>  arch/arm/mach-rockchip/platsmp.c     | 2 +-
>  arch/arm/mach-shmobile/r8a7779.h     | 2 +-
>  arch/arm/mach-shmobile/r8a7790.h     | 2 +-
>  arch/arm/mach-shmobile/r8a7791.h     | 2 +-
>  arch/arm/mach-shmobile/setup-emev2.c | 2 +-
>  arch/arm/mach-shmobile/sh73a0.h      | 2 +-
>  arch/arm/mach-shmobile/smp-emev2.c   | 2 +-
>  arch/arm/mach-shmobile/smp-r8a7779.c | 2 +-
>  arch/arm/mach-shmobile/smp-r8a7790.c | 2 +-
>  arch/arm/mach-shmobile/smp-r8a7791.c | 2 +-
>  arch/arm/mach-shmobile/smp-sh73a0.c  | 2 +-
>  arch/arm/mach-socfpga/platsmp.c      | 4 ++--
>  arch/arm/mach-spear/generic.h        | 2 +-
>  arch/arm/mach-spear/platsmp.c        | 2 +-
>  arch/arm/mach-sti/platsmp.c          | 2 +-
>  arch/arm/mach-sti/smp.h              | 2 +-
>  arch/arm/mach-sunxi/platsmp.c        | 4 ++--
>  arch/arm/mach-tegra/common.h         | 2 +-
>  arch/arm/mach-tegra/platsmp.c        | 2 +-
>  arch/arm/mach-uniphier/platsmp.c     | 2 +-
>  arch/arm/mach-ux500/platsmp.c        | 2 +-
>  arch/arm/mach-vexpress/core.h        | 2 +-
>  arch/arm/mach-vexpress/platsmp.c     | 2 +-
>  arch/arm/mach-zx/platsmp.c           | 2 +-
>  arch/arm/mach-zynq/common.h          | 2 +-
>  arch/arm/mach-zynq/platsmp.c         | 2 +-
>  54 files changed, 64 insertions(+), 64 deletions(-)
> 
> diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c
> index 2b25b60..c773157 100644
> --- a/arch/arm/common/mcpm_platsmp.c
> +++ b/arch/arm/common/mcpm_platsmp.c
> @@ -83,7 +83,7 @@ static void mcpm_cpu_die(unsigned int cpu)
>  
>  #endif
>  
> -static struct smp_operations __initdata mcpm_smp_ops = {
> +static const struct smp_operations mcpm_smp_ops __initconst = {
>  	.smp_boot_secondary	= mcpm_boot_secondary,
>  	.smp_secondary_init	= mcpm_secondary_init,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
> index 68ee3ce..97735a8 100644
> --- a/arch/arm/include/asm/psci.h
> +++ b/arch/arm/include/asm/psci.h
> @@ -14,7 +14,7 @@
>  #ifndef __ASM_ARM_PSCI_H
>  #define __ASM_ARM_PSCI_H
>  
> -extern struct smp_operations psci_smp_ops;
> +extern const struct smp_operations psci_smp_ops;
>  
>  #ifdef CONFIG_ARM_PSCI
>  bool psci_smp_available(void);
> diff --git a/arch/arm/kernel/psci_smp.c b/arch/arm/kernel/psci_smp.c
> index 9d479b2..cb3fcae 100644
> --- a/arch/arm/kernel/psci_smp.c
> +++ b/arch/arm/kernel/psci_smp.c
> @@ -120,7 +120,7 @@ bool __init psci_smp_available(void)
>  	return (psci_ops.cpu_on != NULL);
>  }
>  
> -struct smp_operations __initdata psci_smp_ops = {
> +const struct smp_operations psci_smp_ops __initconst = {
>  	.smp_boot_secondary	= psci_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
>  	.cpu_disable		= psci_cpu_disable,
> diff --git a/arch/arm/mach-alpine/platsmp.c b/arch/arm/mach-alpine/platsmp.c
> index f78429f..dd77ea2 100644
> --- a/arch/arm/mach-alpine/platsmp.c
> +++ b/arch/arm/mach-alpine/platsmp.c
> @@ -42,7 +42,7 @@ static void __init alpine_smp_prepare_cpus(unsigned int max_cpus)
>  	alpine_cpu_pm_init();
>  }
>  
> -static struct smp_operations alpine_smp_ops __initdata = {
> +static const struct smp_operations alpine_smp_ops __initconst = {
>  	.smp_prepare_cpus	= alpine_smp_prepare_cpus,
>  	.smp_boot_secondary	= alpine_boot_secondary,
>  };
> diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
> index 959d4df..ffbd71d 100644
> --- a/arch/arm/mach-axxia/platsmp.c
> +++ b/arch/arm/mach-axxia/platsmp.c
> @@ -82,7 +82,7 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus)
>  	}
>  }
>  
> -static struct smp_operations axxia_smp_ops __initdata = {
> +static const struct smp_operations axxia_smp_ops __initconst = {
>  	.smp_prepare_cpus	= axxia_smp_prepare_cpus,
>  	.smp_boot_secondary	= axxia_boot_secondary,
>  };
> diff --git a/arch/arm/mach-bcm/bcm63xx_smp.c b/arch/arm/mach-bcm/bcm63xx_smp.c
> index 19be904..9b6727e 100644
> --- a/arch/arm/mach-bcm/bcm63xx_smp.c
> +++ b/arch/arm/mach-bcm/bcm63xx_smp.c
> @@ -161,7 +161,7 @@ static void __init bcm63138_smp_prepare_cpus(unsigned int max_cpus)
>  	}
>  }
>  
> -struct smp_operations bcm63138_smp_ops __initdata = {
> +static const struct smp_operations bcm63138_smp_ops __initconst = {
>  	.smp_prepare_cpus	= bcm63138_smp_prepare_cpus,
>  	.smp_boot_secondary	= bcm63138_smp_boot_secondary,
>  };
> diff --git a/arch/arm/mach-bcm/kona_smp.c b/arch/arm/mach-bcm/kona_smp.c
> index 66a0465..da8328b 100644
> --- a/arch/arm/mach-bcm/kona_smp.c
> +++ b/arch/arm/mach-bcm/kona_smp.c
> @@ -194,7 +194,7 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return -ENOSYS;
>  }
>  
> -static struct smp_operations bcm_smp_ops __initdata = {
> +static const struct smp_operations bcm_smp_ops __initconst = {
>  	.smp_prepare_cpus	= bcm_smp_prepare_cpus,
>  	.smp_boot_secondary	= bcm_boot_secondary,
>  };
> diff --git a/arch/arm/mach-bcm/platsmp-brcmstb.c b/arch/arm/mach-bcm/platsmp-brcmstb.c
> index 44d6bddf..40dc844 100644
> --- a/arch/arm/mach-bcm/platsmp-brcmstb.c
> +++ b/arch/arm/mach-bcm/platsmp-brcmstb.c
> @@ -356,7 +356,7 @@ static int brcmstb_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return 0;
>  }
>  
> -static struct smp_operations brcmstb_smp_ops __initdata = {
> +static const struct smp_operations brcmstb_smp_ops __initconst = {
>  	.smp_prepare_cpus	= brcmstb_cpu_ctrl_setup,
>  	.smp_boot_secondary	= brcmstb_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-berlin/platsmp.c b/arch/arm/mach-berlin/platsmp.c
> index 405cd37..93f9068 100644
> --- a/arch/arm/mach-berlin/platsmp.c
> +++ b/arch/arm/mach-berlin/platsmp.c
> @@ -119,7 +119,7 @@ static int berlin_cpu_kill(unsigned int cpu)
>  }
>  #endif
>  
> -static struct smp_operations berlin_smp_ops __initdata = {
> +static const struct smp_operations berlin_smp_ops __initconst = {
>  	.smp_prepare_cpus	= berlin_smp_prepare_cpus,
>  	.smp_boot_secondary	= berlin_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
> index 1534925..e349a03 100644
> --- a/arch/arm/mach-exynos/common.h
> +++ b/arch/arm/mach-exynos/common.h
> @@ -149,7 +149,7 @@ static inline void exynos_pm_init(void) {}
>  extern void exynos_cpu_resume(void);
>  extern void exynos_cpu_resume_ns(void);
>  
> -extern struct smp_operations exynos_smp_ops;
> +extern const struct smp_operations exynos_smp_ops;
>  
>  extern void exynos_cpu_power_down(int cpu);
>  extern void exynos_cpu_power_up(int cpu);
> diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
> index 98a2c0c..5bd9559 100644
> --- a/arch/arm/mach-exynos/platsmp.c
> +++ b/arch/arm/mach-exynos/platsmp.c
> @@ -479,7 +479,7 @@ static void exynos_cpu_die(unsigned int cpu)
>  }
>  #endif /* CONFIG_HOTPLUG_CPU */
>  
> -struct smp_operations exynos_smp_ops __initdata = {
> +const struct smp_operations exynos_smp_ops __initconst = {
>  	.smp_init_cpus		= exynos_smp_init_cpus,
>  	.smp_prepare_cpus	= exynos_smp_prepare_cpus,
>  	.smp_secondary_init	= exynos_secondary_init,
> diff --git a/arch/arm/mach-hisi/platmcpm.c b/arch/arm/mach-hisi/platmcpm.c
> index b5f8f5f..4b653a8 100644
> --- a/arch/arm/mach-hisi/platmcpm.c
> +++ b/arch/arm/mach-hisi/platmcpm.c
> @@ -239,7 +239,7 @@ err:
>  }
>  #endif
>  
> -static struct smp_operations __initdata hip04_smp_ops = {
> +static const struct smp_operations hip04_smp_ops __initconst = {
>  	.smp_boot_secondary	= hip04_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
>  	.cpu_die		= hip04_cpu_die,
> diff --git a/arch/arm/mach-hisi/platsmp.c b/arch/arm/mach-hisi/platsmp.c
> index 3c5237d..47ed32c 100644
> --- a/arch/arm/mach-hisi/platsmp.c
> +++ b/arch/arm/mach-hisi/platsmp.c
> @@ -89,7 +89,7 @@ static int hi3xxx_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return 0;
>  }
>  
> -static struct smp_operations hi3xxx_smp_ops __initdata = {
> +static const struct smp_operations hi3xxx_smp_ops __initconst = {
>  	.smp_prepare_cpus	= hi3xxx_smp_prepare_cpus,
>  	.smp_boot_secondary	= hi3xxx_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> @@ -126,7 +126,7 @@ static int hix5hd2_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  }
>  
>  
> -static struct smp_operations hix5hd2_smp_ops __initdata = {
> +static const struct smp_operations hix5hd2_smp_ops __initconst = {
>  	.smp_prepare_cpus	= hisi_common_smp_prepare_cpus,
>  	.smp_boot_secondary	= hix5hd2_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> @@ -176,7 +176,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return 0;
>  }
>  
> -static struct smp_operations hip01_smp_ops __initdata = {
> +static const struct smp_operations hip01_smp_ops __initconst = {
>  	.smp_prepare_cpus       = hisi_common_smp_prepare_cpus,
>  	.smp_boot_secondary     = hip01_boot_secondary,
>  };
> diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
> index e2d5383..32b83f0 100644
> --- a/arch/arm/mach-imx/common.h
> +++ b/arch/arm/mach-imx/common.h
> @@ -153,7 +153,7 @@ void imx_init_l2cache(void);
>  static inline void imx_init_l2cache(void) {}
>  #endif
>  
> -extern struct smp_operations imx_smp_ops;
> -extern struct smp_operations ls1021a_smp_ops;
> +extern const struct smp_operations imx_smp_ops;
> +extern const struct smp_operations ls1021a_smp_ops;
>  
>  #endif
> diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c
> index 7f27001..711dbbd 100644
> --- a/arch/arm/mach-imx/platsmp.c
> +++ b/arch/arm/mach-imx/platsmp.c
> @@ -88,7 +88,7 @@ static void __init imx_smp_prepare_cpus(unsigned int max_cpus)
>  	sync_cache_w(&g_diag_reg);
>  }
>  
> -struct smp_operations  imx_smp_ops __initdata = {
> +const struct smp_operations imx_smp_ops __initconst = {
>  	.smp_init_cpus		= imx_smp_init_cpus,
>  	.smp_prepare_cpus	= imx_smp_prepare_cpus,
>  	.smp_boot_secondary	= imx_boot_secondary,
> @@ -123,7 +123,7 @@ static void __init ls1021a_smp_prepare_cpus(unsigned int max_cpus)
>  	iounmap(dcfg_base);
>  }
>  
> -struct smp_operations  ls1021a_smp_ops __initdata = {
> +const struct smp_operations ls1021a_smp_ops __initconst = {
>  	.smp_prepare_cpus	= ls1021a_smp_prepare_cpus,
>  	.smp_boot_secondary	= ls1021a_boot_secondary,
>  };
> diff --git a/arch/arm/mach-keystone/keystone.h b/arch/arm/mach-keystone/keystone.h
> index cd04a1c..33eaa03 100644
> --- a/arch/arm/mach-keystone/keystone.h
> +++ b/arch/arm/mach-keystone/keystone.h
> @@ -15,7 +15,7 @@
>  
>  #ifndef __ASSEMBLER__
>  
> -extern struct smp_operations keystone_smp_ops;
> +extern const struct smp_operations keystone_smp_ops;
>  extern void secondary_startup(void);
>  extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr);
>  extern int keystone_pm_runtime_init(void);
> diff --git a/arch/arm/mach-keystone/platsmp.c b/arch/arm/mach-keystone/platsmp.c
> index 4bbb184..5665276 100644
> --- a/arch/arm/mach-keystone/platsmp.c
> +++ b/arch/arm/mach-keystone/platsmp.c
> @@ -39,6 +39,6 @@ static int keystone_smp_boot_secondary(unsigned int cpu,
>  	return error;
>  }
>  
> -struct smp_operations keystone_smp_ops __initdata = {
> +const struct smp_operations keystone_smp_ops __initconst = {
>  	.smp_boot_secondary	= keystone_smp_boot_secondary,
>  };
> diff --git a/arch/arm/mach-mediatek/platsmp.c b/arch/arm/mach-mediatek/platsmp.c
> index 8141f3f..a1b07ee 100644
> --- a/arch/arm/mach-mediatek/platsmp.c
> +++ b/arch/arm/mach-mediatek/platsmp.c
> @@ -128,13 +128,13 @@ static void __init mtk_smp_prepare_cpus(unsigned int max_cpus)
>  	__mtk_smp_prepare_cpus(max_cpus, 0);
>  }
>  
> -static struct smp_operations mt81xx_tz_smp_ops __initdata = {
> +static const struct smp_operations mt81xx_tz_smp_ops __initconst = {
>  	.smp_prepare_cpus = mtk_tz_smp_prepare_cpus,
>  	.smp_boot_secondary = mtk_boot_secondary,
>  };
>  CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops);
>  
> -static struct smp_operations mt6589_smp_ops __initdata = {
> +static const struct smp_operations mt6589_smp_ops __initconst = {
>  	.smp_prepare_cpus = mtk_smp_prepare_cpus,
>  	.smp_boot_secondary = mtk_boot_secondary,
>  };
> diff --git a/arch/arm/mach-mvebu/armada-370-xp.h b/arch/arm/mach-mvebu/armada-370-xp.h
> index c55bbf8..09413b6 100644
> --- a/arch/arm/mach-mvebu/armada-370-xp.h
> +++ b/arch/arm/mach-mvebu/armada-370-xp.h
> @@ -17,7 +17,7 @@
>  
>  #ifdef CONFIG_SMP
>  void armada_xp_secondary_startup(void);
> -extern struct smp_operations armada_xp_smp_ops;
> +extern const struct smp_operations armada_xp_smp_ops;
>  #endif
>  
>  #endif /* __MACH_ARMADA_370_XP_H */
> diff --git a/arch/arm/mach-mvebu/platsmp-a9.c b/arch/arm/mach-mvebu/platsmp-a9.c
> index 3d50004..d715dec 100644
> --- a/arch/arm/mach-mvebu/platsmp-a9.c
> +++ b/arch/arm/mach-mvebu/platsmp-a9.c
> @@ -93,11 +93,11 @@ static int armada_38x_cpu_kill(unsigned int cpu)
>  }
>  #endif
>  
> -static struct smp_operations mvebu_cortex_a9_smp_ops __initdata = {
> +static const struct smp_operations mvebu_cortex_a9_smp_ops __initconst = {
>  	.smp_boot_secondary	= mvebu_cortex_a9_boot_secondary,
>  };
>  
> -static struct smp_operations armada_38x_smp_ops __initdata = {
> +static const struct smp_operations armada_38x_smp_ops __initconst = {
>  	.smp_boot_secondary	= mvebu_cortex_a9_boot_secondary,
>  	.smp_secondary_init     = armada_38x_secondary_init,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-mvebu/platsmp.c b/arch/arm/mach-mvebu/platsmp.c
> index 58cc8c1..f9597b7 100644
> --- a/arch/arm/mach-mvebu/platsmp.c
> +++ b/arch/arm/mach-mvebu/platsmp.c
> @@ -170,7 +170,7 @@ static int armada_xp_cpu_kill(unsigned int cpu)
>  }
>  #endif
>  
> -struct smp_operations armada_xp_smp_ops __initdata = {
> +const struct smp_operations armada_xp_smp_ops __initconst = {
>  	.smp_init_cpus		= armada_xp_smp_init_cpus,
>  	.smp_prepare_cpus	= armada_xp_smp_prepare_cpus,
>  	.smp_boot_secondary	= armada_xp_boot_secondary,
> diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
> index 0cba957..f7666b9 100644
> --- a/arch/arm/mach-omap2/common.h
> +++ b/arch/arm/mach-omap2/common.h
> @@ -270,7 +270,7 @@ extern u32 omap_read_auxcoreboot0(void);
>  
>  extern void omap4_cpu_die(unsigned int cpu);
>  
> -extern struct smp_operations omap4_smp_ops;
> +extern const struct smp_operations omap4_smp_ops;
>  
>  extern void omap5_secondary_startup(void);
>  extern void omap5_secondary_hyp_startup(void);
> diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
> index 5305ec7..ddcd1d2 100644
> --- a/arch/arm/mach-omap2/omap-smp.c
> +++ b/arch/arm/mach-omap2/omap-smp.c
> @@ -241,7 +241,7 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
>  
>  }
>  
> -struct smp_operations omap4_smp_ops __initdata = {
> +const struct smp_operations omap4_smp_ops __initconst = {
>  	.smp_init_cpus		= omap4_smp_init_cpus,
>  	.smp_prepare_cpus	= omap4_smp_prepare_cpus,
>  	.smp_secondary_init	= omap4_secondary_init,
> diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h
> index 3916a66..6d77b62 100644
> --- a/arch/arm/mach-prima2/common.h
> +++ b/arch/arm/mach-prima2/common.h
> @@ -15,7 +15,7 @@
>  #include <asm/mach/time.h>
>  #include <asm/exception.h>
>  
> -extern struct smp_operations   sirfsoc_smp_ops;
> +extern const struct smp_operations sirfsoc_smp_ops;
>  extern void sirfsoc_secondary_startup(void);
>  extern void sirfsoc_cpu_die(unsigned int cpu);
>  
> diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c
> index e46c910..0875b99 100644
> --- a/arch/arm/mach-prima2/platsmp.c
> +++ b/arch/arm/mach-prima2/platsmp.c
> @@ -112,7 +112,7 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return pen_release != -1 ? -ENOSYS : 0;
>  }
>  
> -struct smp_operations sirfsoc_smp_ops __initdata = {
> +const struct smp_operations sirfsoc_smp_ops __initconst = {
>  	.smp_secondary_init     = sirfsoc_secondary_init,
>  	.smp_boot_secondary     = sirfsoc_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-qcom/platsmp.c b/arch/arm/mach-qcom/platsmp.c
> index 9b00123..5494c9e 100644
> --- a/arch/arm/mach-qcom/platsmp.c
> +++ b/arch/arm/mach-qcom/platsmp.c
> @@ -332,7 +332,7 @@ static void __init qcom_smp_prepare_cpus(unsigned int max_cpus)
>  	}
>  }
>  
> -static struct smp_operations smp_msm8660_ops __initdata = {
> +static const struct smp_operations smp_msm8660_ops __initconst = {
>  	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
>  	.smp_secondary_init	= qcom_secondary_init,
>  	.smp_boot_secondary	= msm8660_boot_secondary,
> @@ -342,7 +342,7 @@ static struct smp_operations smp_msm8660_ops __initdata = {
>  };
>  CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops);
>  
> -static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
> +static const struct smp_operations qcom_smp_kpssv1_ops __initconst = {
>  	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
>  	.smp_secondary_init	= qcom_secondary_init,
>  	.smp_boot_secondary	= kpssv1_boot_secondary,
> @@ -352,7 +352,7 @@ static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
>  };
>  CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops);
>  
> -static struct smp_operations qcom_smp_kpssv2_ops __initdata = {
> +static const struct smp_operations qcom_smp_kpssv2_ops __initconst = {
>  	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
>  	.smp_secondary_init	= qcom_secondary_init,
>  	.smp_boot_secondary	= kpssv2_boot_secondary,
> diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
> index 868ece2..670ee0e 100644
> --- a/arch/arm/mach-realview/core.h
> +++ b/arch/arm/mach-realview/core.h
> @@ -54,7 +54,7 @@ extern int realview_usb_register(struct resource *res);
>  extern void realview_init_early(void);
>  extern void realview_fixup(struct tag *tags, char **from);
>  
> -extern struct smp_operations realview_smp_ops;
> +extern const struct smp_operations realview_smp_ops;
>  extern void realview_cpu_die(unsigned int cpu);
>  
>  #endif
> diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
> index 98e3052..dc29029 100644
> --- a/arch/arm/mach-realview/platsmp.c
> +++ b/arch/arm/mach-realview/platsmp.c
> @@ -75,7 +75,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus)
>  		     __io_address(REALVIEW_SYS_FLAGSSET));
>  }
>  
> -struct smp_operations realview_smp_ops __initdata = {
> +const struct smp_operations realview_smp_ops __initconst = {
>  	.smp_init_cpus		= realview_smp_init_cpus,
>  	.smp_prepare_cpus	= realview_smp_prepare_cpus,
>  	.smp_secondary_init	= versatile_secondary_init,
> diff --git a/arch/arm/mach-rockchip/platsmp.c b/arch/arm/mach-rockchip/platsmp.c
> index 3e7a4b7..938888f 100644
> --- a/arch/arm/mach-rockchip/platsmp.c
> +++ b/arch/arm/mach-rockchip/platsmp.c
> @@ -340,7 +340,7 @@ static void rockchip_cpu_die(unsigned int cpu)
>  }
>  #endif
>  
> -static struct smp_operations rockchip_smp_ops __initdata = {
> +static const struct smp_operations rockchip_smp_ops __initconst = {
>  	.smp_prepare_cpus	= rockchip_smp_prepare_cpus,
>  	.smp_boot_secondary	= rockchip_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/r8a7779.h b/arch/arm/mach-shmobile/r8a7779.h
> index e1aaa2e..2a5f773 100644
> --- a/arch/arm/mach-shmobile/r8a7779.h
> +++ b/arch/arm/mach-shmobile/r8a7779.h
> @@ -3,6 +3,6 @@
>  
>  extern void r8a7779_pm_init(void);
>  
> -extern struct smp_operations r8a7779_smp_ops;
> +extern const struct smp_operations r8a7779_smp_ops;
>  
>  #endif /* __ASM_R8A7779_H__ */
> diff --git a/arch/arm/mach-shmobile/r8a7790.h b/arch/arm/mach-shmobile/r8a7790.h
> index 1a46d02..136f345 100644
> --- a/arch/arm/mach-shmobile/r8a7790.h
> +++ b/arch/arm/mach-shmobile/r8a7790.h
> @@ -1,6 +1,6 @@
>  #ifndef __ASM_R8A7790_H__
>  #define __ASM_R8A7790_H__
>  
> -extern struct smp_operations r8a7790_smp_ops;
> +extern const struct smp_operations r8a7790_smp_ops;
>  
>  #endif /* __ASM_R8A7790_H__ */
> diff --git a/arch/arm/mach-shmobile/r8a7791.h b/arch/arm/mach-shmobile/r8a7791.h
> index 7ca0b7d..cf7a840 100644
> --- a/arch/arm/mach-shmobile/r8a7791.h
> +++ b/arch/arm/mach-shmobile/r8a7791.h
> @@ -1,6 +1,6 @@
>  #ifndef __ASM_R8A7791_H__
>  #define __ASM_R8A7791_H__
>  
> -extern struct smp_operations r8a7791_smp_ops;
> +extern const struct smp_operations r8a7791_smp_ops;
>  
>  #endif /* __ASM_R8A7791_H__ */
> diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c
> index 37f7b15..10b7cb5 100644
> --- a/arch/arm/mach-shmobile/setup-emev2.c
> +++ b/arch/arm/mach-shmobile/setup-emev2.c
> @@ -42,7 +42,7 @@ static const char *const emev2_boards_compat_dt[] __initconst = {
>  	NULL,
>  };
>  
> -extern struct smp_operations emev2_smp_ops;
> +extern const struct smp_operations emev2_smp_ops;
>  
>  DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")
>  	.smp		= smp_ops(emev2_smp_ops),
> diff --git a/arch/arm/mach-shmobile/sh73a0.h b/arch/arm/mach-shmobile/sh73a0.h
> index 3964680..50ef24f 100644
> --- a/arch/arm/mach-shmobile/sh73a0.h
> +++ b/arch/arm/mach-shmobile/sh73a0.h
> @@ -1,6 +1,6 @@
>  #ifndef __ASM_SH73A0_H__
>  #define __ASM_SH73A0_H__
>  
> -extern struct smp_operations sh73a0_smp_ops;
> +extern const struct smp_operations sh73a0_smp_ops;
>  
>  #endif /* __ASM_SH73A0_H__ */
> diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c
> index baff3b5..adbac69 100644
> --- a/arch/arm/mach-shmobile/smp-emev2.c
> +++ b/arch/arm/mach-shmobile/smp-emev2.c
> @@ -49,7 +49,7 @@ static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
>  	shmobile_smp_scu_prepare_cpus(max_cpus);
>  }
>  
> -struct smp_operations emev2_smp_ops __initdata = {
> +const struct smp_operations emev2_smp_ops __initconst = {
>  	.smp_prepare_cpus	= emev2_smp_prepare_cpus,
>  	.smp_boot_secondary	= emev2_boot_secondary,
>  };
> diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c
> index 353562b8..b854fe2 100644
> --- a/arch/arm/mach-shmobile/smp-r8a7779.c
> +++ b/arch/arm/mach-shmobile/smp-r8a7779.c
> @@ -117,7 +117,7 @@ static int r8a7779_cpu_kill(unsigned int cpu)
>  }
>  #endif /* CONFIG_HOTPLUG_CPU */
>  
> -struct smp_operations r8a7779_smp_ops  __initdata = {
> +const struct smp_operations r8a7779_smp_ops  __initconst = {
>  	.smp_prepare_cpus	= r8a7779_smp_prepare_cpus,
>  	.smp_boot_secondary	= r8a7779_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/smp-r8a7790.c b/arch/arm/mach-shmobile/smp-r8a7790.c
> index 4b33d43..f6426c6 100644
> --- a/arch/arm/mach-shmobile/smp-r8a7790.c
> +++ b/arch/arm/mach-shmobile/smp-r8a7790.c
> @@ -60,7 +60,7 @@ static void __init r8a7790_smp_prepare_cpus(unsigned int max_cpus)
>  	rcar_sysc_power_up(&r8a7790_ca7_scu);
>  }
>  
> -struct smp_operations r8a7790_smp_ops __initdata = {
> +const struct smp_operations r8a7790_smp_ops __initconst = {
>  	.smp_prepare_cpus	= r8a7790_smp_prepare_cpus,
>  	.smp_boot_secondary	= shmobile_smp_apmu_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/smp-r8a7791.c b/arch/arm/mach-shmobile/smp-r8a7791.c
> index b2508c0..2d6417a 100644
> --- a/arch/arm/mach-shmobile/smp-r8a7791.c
> +++ b/arch/arm/mach-shmobile/smp-r8a7791.c
> @@ -54,7 +54,7 @@ static int r8a7791_smp_boot_secondary(unsigned int cpu,
>  	return shmobile_smp_apmu_boot_secondary(cpu, idle);
>  }
>  
> -struct smp_operations r8a7791_smp_ops __initdata = {
> +const struct smp_operations r8a7791_smp_ops __initconst = {
>  	.smp_prepare_cpus	= r8a7791_smp_prepare_cpus,
>  	.smp_boot_secondary	= r8a7791_smp_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c
> index bc2824a..ee1a4b7 100644
> --- a/arch/arm/mach-shmobile/smp-sh73a0.c
> +++ b/arch/arm/mach-shmobile/smp-sh73a0.c
> @@ -56,7 +56,7 @@ static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus)
>  	shmobile_smp_scu_prepare_cpus(max_cpus);
>  }
>  
> -struct smp_operations sh73a0_smp_ops __initdata = {
> +const struct smp_operations sh73a0_smp_ops __initconst = {
>  	.smp_prepare_cpus	= sh73a0_smp_prepare_cpus,
>  	.smp_boot_secondary	= sh73a0_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c
> index 15c8ce8..cbb0a54 100644
> --- a/arch/arm/mach-socfpga/platsmp.c
> +++ b/arch/arm/mach-socfpga/platsmp.c
> @@ -117,7 +117,7 @@ static int socfpga_cpu_kill(unsigned int cpu)
>  	return 1;
>  }
>  
> -static struct smp_operations socfpga_smp_ops __initdata = {
> +static const struct smp_operations socfpga_smp_ops __initconst = {
>  	.smp_prepare_cpus	= socfpga_smp_prepare_cpus,
>  	.smp_boot_secondary	= socfpga_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> @@ -126,7 +126,7 @@ static struct smp_operations socfpga_smp_ops __initdata = {
>  #endif
>  };
>  
> -static struct smp_operations socfpga_a10_smp_ops __initdata = {
> +static const struct smp_operations socfpga_a10_smp_ops __initconst = {
>  	.smp_prepare_cpus	= socfpga_smp_prepare_cpus,
>  	.smp_boot_secondary	= socfpga_a10_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-spear/generic.h b/arch/arm/mach-spear/generic.h
> index 0664091..909b97c0 100644
> --- a/arch/arm/mach-spear/generic.h
> +++ b/arch/arm/mach-spear/generic.h
> @@ -39,7 +39,7 @@ void spear_restart(enum reboot_mode, const char *);
>  void spear13xx_secondary_startup(void);
>  void spear13xx_cpu_die(unsigned int cpu);
>  
> -extern struct smp_operations spear13xx_smp_ops;
> +extern const struct smp_operations spear13xx_smp_ops;
>  
>  #ifdef CONFIG_MACH_SPEAR1310
>  void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base);
> diff --git a/arch/arm/mach-spear/platsmp.c b/arch/arm/mach-spear/platsmp.c
> index fd42977..8d1e2d5 100644
> --- a/arch/arm/mach-spear/platsmp.c
> +++ b/arch/arm/mach-spear/platsmp.c
> @@ -120,7 +120,7 @@ static void __init spear13xx_smp_prepare_cpus(unsigned int max_cpus)
>  	__raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION);
>  }
>  
> -struct smp_operations spear13xx_smp_ops __initdata = {
> +const struct smp_operations spear13xx_smp_ops __initconst = {
>         .smp_init_cpus		= spear13xx_smp_init_cpus,
>         .smp_prepare_cpus	= spear13xx_smp_prepare_cpus,
>         .smp_secondary_init	= spear13xx_secondary_init,
> diff --git a/arch/arm/mach-sti/platsmp.c b/arch/arm/mach-sti/platsmp.c
> index c4ad6ea..ea5a227 100644
> --- a/arch/arm/mach-sti/platsmp.c
> +++ b/arch/arm/mach-sti/platsmp.c
> @@ -156,7 +156,7 @@ static void __init sti_smp_prepare_cpus(unsigned int max_cpus)
>  	}
>  }
>  
> -struct smp_operations __initdata sti_smp_ops = {
> +const struct smp_operations sti_smp_ops __initconst = {
>  	.smp_prepare_cpus	= sti_smp_prepare_cpus,
>  	.smp_secondary_init	= sti_secondary_init,
>  	.smp_boot_secondary	= sti_boot_secondary,
> diff --git a/arch/arm/mach-sti/smp.h b/arch/arm/mach-sti/smp.h
> index ae22707..d8a2f87 100644
> --- a/arch/arm/mach-sti/smp.h
> +++ b/arch/arm/mach-sti/smp.h
> @@ -12,7 +12,7 @@
>  #ifndef __MACH_STI_SMP_H
>  #define __MACH_STI_SMP_H
>  
> -extern struct smp_operations	sti_smp_ops;
> +extern const struct smp_operations sti_smp_ops;
>  
>  void sti_secondary_startup(void);
>  
> diff --git a/arch/arm/mach-sunxi/platsmp.c b/arch/arm/mach-sunxi/platsmp.c
> index e8483ec..6642267 100644
> --- a/arch/arm/mach-sunxi/platsmp.c
> +++ b/arch/arm/mach-sunxi/platsmp.c
> @@ -116,7 +116,7 @@ static int sun6i_smp_boot_secondary(unsigned int cpu,
>  	return 0;
>  }
>  
> -static struct smp_operations sun6i_smp_ops __initdata = {
> +static const struct smp_operations sun6i_smp_ops __initconst = {
>  	.smp_prepare_cpus	= sun6i_smp_prepare_cpus,
>  	.smp_boot_secondary	= sun6i_smp_boot_secondary,
>  };
> @@ -185,7 +185,7 @@ static int sun8i_smp_boot_secondary(unsigned int cpu,
>  	return 0;
>  }
>  
> -struct smp_operations sun8i_smp_ops __initdata = {
> +static const struct smp_operations sun8i_smp_ops __initconst = {
>  	.smp_prepare_cpus	= sun8i_smp_prepare_cpus,
>  	.smp_boot_secondary	= sun8i_smp_boot_secondary,
>  };
> diff --git a/arch/arm/mach-tegra/common.h b/arch/arm/mach-tegra/common.h
> index 5900cc4..1f6fb80 100644
> --- a/arch/arm/mach-tegra/common.h
> +++ b/arch/arm/mach-tegra/common.h
> @@ -1,4 +1,4 @@
> -extern struct smp_operations tegra_smp_ops;
> +extern const struct smp_operations tegra_smp_ops;
>  
>  extern int tegra_cpu_kill(unsigned int cpu);
>  extern void tegra_cpu_die(unsigned int cpu);
> diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
> index b450866..f3f61db 100644
> --- a/arch/arm/mach-tegra/platsmp.c
> +++ b/arch/arm/mach-tegra/platsmp.c
> @@ -192,7 +192,7 @@ static void __init tegra_smp_prepare_cpus(unsigned int max_cpus)
>  		scu_enable(IO_ADDRESS(scu_a9_get_base()));
>  }
>  
> -struct smp_operations tegra_smp_ops __initdata = {
> +const struct smp_operations tegra_smp_ops __initconst = {
>  	.smp_prepare_cpus	= tegra_smp_prepare_cpus,
>  	.smp_secondary_init	= tegra_secondary_init,
>  	.smp_boot_secondary	= tegra_boot_secondary,
> diff --git a/arch/arm/mach-uniphier/platsmp.c b/arch/arm/mach-uniphier/platsmp.c
> index f057766..e1cfc1d 100644
> --- a/arch/arm/mach-uniphier/platsmp.c
> +++ b/arch/arm/mach-uniphier/platsmp.c
> @@ -201,7 +201,7 @@ static int __init uniphier_smp_boot_secondary(unsigned int cpu,
>  	return 0;
>  }
>  
> -static struct smp_operations uniphier_smp_ops __initdata = {
> +static const struct smp_operations uniphier_smp_ops __initconst = {
>  	.smp_prepare_cpus	= uniphier_smp_prepare_cpus,
>  	.smp_boot_secondary	= uniphier_smp_boot_secondary,
>  };
> diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
> index 70766b96..88b8ab4 100644
> --- a/arch/arm/mach-ux500/platsmp.c
> +++ b/arch/arm/mach-ux500/platsmp.c
> @@ -98,7 +98,7 @@ static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  	return 0;
>  }
>  
> -struct smp_operations ux500_smp_ops __initdata = {
> +static const struct smp_operations ux500_smp_ops __initconst = {
>  	.smp_prepare_cpus	= ux500_smp_prepare_cpus,
>  	.smp_boot_secondary	= ux500_boot_secondary,
>  #ifdef CONFIG_HOTPLUG_CPU
> diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h
> index 2a11d3a..a162ab4 100644
> --- a/arch/arm/mach-vexpress/core.h
> +++ b/arch/arm/mach-vexpress/core.h
> @@ -1,5 +1,5 @@
>  bool vexpress_smp_init_ops(void);
>  
> -extern struct smp_operations	vexpress_smp_dt_ops;
> +extern const struct smp_operations vexpress_smp_dt_ops;
>  
>  extern void vexpress_cpu_die(unsigned int cpu);
> diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c
> index 83188cf..8b8d072 100644
> --- a/arch/arm/mach-vexpress/platsmp.c
> +++ b/arch/arm/mach-vexpress/platsmp.c
> @@ -64,7 +64,7 @@ static void __init vexpress_smp_dt_prepare_cpus(unsigned int max_cpus)
>  	vexpress_flags_set(virt_to_phys(versatile_secondary_startup));
>  }
>  
> -struct smp_operations __initdata vexpress_smp_dt_ops = {
> +const struct smp_operations vexpress_smp_dt_ops __initconst = {
>  	.smp_prepare_cpus	= vexpress_smp_dt_prepare_cpus,
>  	.smp_secondary_init	= versatile_secondary_init,
>  	.smp_boot_secondary	= versatile_boot_secondary,
> diff --git a/arch/arm/mach-zx/platsmp.c b/arch/arm/mach-zx/platsmp.c
> index a369398..0297f92 100644
> --- a/arch/arm/mach-zx/platsmp.c
> +++ b/arch/arm/mach-zx/platsmp.c
> @@ -176,7 +176,7 @@ static void zx_secondary_init(unsigned int cpu)
>  	scu_power_mode(scu_base, SCU_PM_NORMAL);
>  }
>  
> -struct smp_operations zx_smp_ops __initdata = {
> +static const struct smp_operations zx_smp_ops __initconst = {
>  	.smp_prepare_cpus	= zx_smp_prepare_cpus,
>  	.smp_secondary_init	= zx_secondary_init,
>  	.smp_boot_secondary	= zx_boot_secondary,
> diff --git a/arch/arm/mach-zynq/common.h b/arch/arm/mach-zynq/common.h
> index 79cda2e..e771933 100644
> --- a/arch/arm/mach-zynq/common.h
> +++ b/arch/arm/mach-zynq/common.h
> @@ -30,7 +30,7 @@ extern char zynq_secondary_trampoline;
>  extern char zynq_secondary_trampoline_jump;
>  extern char zynq_secondary_trampoline_end;
>  extern int zynq_cpun_start(u32 address, int cpu);
> -extern struct smp_operations zynq_smp_ops __initdata;
> +extern const struct smp_operations zynq_smp_ops;
>  #endif
>  
>  extern void __iomem *zynq_scu_base;
> diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c
> index f66816c..7cd9865 100644
> --- a/arch/arm/mach-zynq/platsmp.c
> +++ b/arch/arm/mach-zynq/platsmp.c
> @@ -157,7 +157,7 @@ static void zynq_cpu_die(unsigned int cpu)
>  }
>  #endif
>  
> -struct smp_operations zynq_smp_ops __initdata = {
> +const struct smp_operations zynq_smp_ops __initconst = {
>  	.smp_init_cpus		= zynq_smp_init_cpus,
>  	.smp_prepare_cpus	= zynq_smp_prepare_cpus,
>  	.smp_boot_secondary	= zynq_boot_secondary,
> -- 
> 1.9.1
> 
>
Liviu Dudau Nov. 24, 2015, 6:34 p.m. UTC | #12
On Sun, Nov 15, 2015 at 10:39:53AM +0900, Masahiro Yamada wrote:
> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
> 
> Also, add "static" where it is possible.
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>
> ---

[....]

> diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h
> index 2a11d3a..a162ab4 100644
> --- a/arch/arm/mach-vexpress/core.h
> +++ b/arch/arm/mach-vexpress/core.h
> @@ -1,5 +1,5 @@
>  bool vexpress_smp_init_ops(void);
>  
> -extern struct smp_operations	vexpress_smp_dt_ops;
> +extern const struct smp_operations vexpress_smp_dt_ops;
>  
>  extern void vexpress_cpu_die(unsigned int cpu);
> diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c
> index 83188cf..8b8d072 100644
> --- a/arch/arm/mach-vexpress/platsmp.c
> +++ b/arch/arm/mach-vexpress/platsmp.c
> @@ -64,7 +64,7 @@ static void __init vexpress_smp_dt_prepare_cpus(unsigned int max_cpus)
>  	vexpress_flags_set(virt_to_phys(versatile_secondary_startup));
>  }
>  
> -struct smp_operations __initdata vexpress_smp_dt_ops = {
> +const struct smp_operations vexpress_smp_dt_ops __initconst = {
>  	.smp_prepare_cpus	= vexpress_smp_dt_prepare_cpus,
>  	.smp_secondary_init	= versatile_secondary_init,
>  	.smp_boot_secondary	= versatile_boot_secondary,

[....]

For the vexpress part:

Acked-by: Liviu Dudau <Liviu.Dudau@arm.com>
Linus Walleij Dec. 1, 2015, 9:43 a.m. UTC | #13
On Sun, Nov 15, 2015 at 2:39 AM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:

> These smp_operations structures are not over-written, so add "const"
> qualifier and replace __initdata with __initconst.
>
> Also, add "static" where it is possible.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Moritz Fischer <moritz.fischer@ettus.com>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

Patch
diff mbox

diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c
index 2b25b60..c773157 100644
--- a/arch/arm/common/mcpm_platsmp.c
+++ b/arch/arm/common/mcpm_platsmp.c
@@ -83,7 +83,7 @@  static void mcpm_cpu_die(unsigned int cpu)
 
 #endif
 
-static struct smp_operations __initdata mcpm_smp_ops = {
+static const struct smp_operations mcpm_smp_ops __initconst = {
 	.smp_boot_secondary	= mcpm_boot_secondary,
 	.smp_secondary_init	= mcpm_secondary_init,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
index 68ee3ce..97735a8 100644
--- a/arch/arm/include/asm/psci.h
+++ b/arch/arm/include/asm/psci.h
@@ -14,7 +14,7 @@ 
 #ifndef __ASM_ARM_PSCI_H
 #define __ASM_ARM_PSCI_H
 
-extern struct smp_operations psci_smp_ops;
+extern const struct smp_operations psci_smp_ops;
 
 #ifdef CONFIG_ARM_PSCI
 bool psci_smp_available(void);
diff --git a/arch/arm/kernel/psci_smp.c b/arch/arm/kernel/psci_smp.c
index 9d479b2..cb3fcae 100644
--- a/arch/arm/kernel/psci_smp.c
+++ b/arch/arm/kernel/psci_smp.c
@@ -120,7 +120,7 @@  bool __init psci_smp_available(void)
 	return (psci_ops.cpu_on != NULL);
 }
 
-struct smp_operations __initdata psci_smp_ops = {
+const struct smp_operations psci_smp_ops __initconst = {
 	.smp_boot_secondary	= psci_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
 	.cpu_disable		= psci_cpu_disable,
diff --git a/arch/arm/mach-alpine/platsmp.c b/arch/arm/mach-alpine/platsmp.c
index f78429f..dd77ea2 100644
--- a/arch/arm/mach-alpine/platsmp.c
+++ b/arch/arm/mach-alpine/platsmp.c
@@ -42,7 +42,7 @@  static void __init alpine_smp_prepare_cpus(unsigned int max_cpus)
 	alpine_cpu_pm_init();
 }
 
-static struct smp_operations alpine_smp_ops __initdata = {
+static const struct smp_operations alpine_smp_ops __initconst = {
 	.smp_prepare_cpus	= alpine_smp_prepare_cpus,
 	.smp_boot_secondary	= alpine_boot_secondary,
 };
diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
index 959d4df..ffbd71d 100644
--- a/arch/arm/mach-axxia/platsmp.c
+++ b/arch/arm/mach-axxia/platsmp.c
@@ -82,7 +82,7 @@  static void __init axxia_smp_prepare_cpus(unsigned int max_cpus)
 	}
 }
 
-static struct smp_operations axxia_smp_ops __initdata = {
+static const struct smp_operations axxia_smp_ops __initconst = {
 	.smp_prepare_cpus	= axxia_smp_prepare_cpus,
 	.smp_boot_secondary	= axxia_boot_secondary,
 };
diff --git a/arch/arm/mach-bcm/bcm63xx_smp.c b/arch/arm/mach-bcm/bcm63xx_smp.c
index 19be904..9b6727e 100644
--- a/arch/arm/mach-bcm/bcm63xx_smp.c
+++ b/arch/arm/mach-bcm/bcm63xx_smp.c
@@ -161,7 +161,7 @@  static void __init bcm63138_smp_prepare_cpus(unsigned int max_cpus)
 	}
 }
 
-struct smp_operations bcm63138_smp_ops __initdata = {
+static const struct smp_operations bcm63138_smp_ops __initconst = {
 	.smp_prepare_cpus	= bcm63138_smp_prepare_cpus,
 	.smp_boot_secondary	= bcm63138_smp_boot_secondary,
 };
diff --git a/arch/arm/mach-bcm/kona_smp.c b/arch/arm/mach-bcm/kona_smp.c
index 66a0465..da8328b 100644
--- a/arch/arm/mach-bcm/kona_smp.c
+++ b/arch/arm/mach-bcm/kona_smp.c
@@ -194,7 +194,7 @@  static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle)
 	return -ENOSYS;
 }
 
-static struct smp_operations bcm_smp_ops __initdata = {
+static const struct smp_operations bcm_smp_ops __initconst = {
 	.smp_prepare_cpus	= bcm_smp_prepare_cpus,
 	.smp_boot_secondary	= bcm_boot_secondary,
 };
diff --git a/arch/arm/mach-bcm/platsmp-brcmstb.c b/arch/arm/mach-bcm/platsmp-brcmstb.c
index 44d6bddf..40dc844 100644
--- a/arch/arm/mach-bcm/platsmp-brcmstb.c
+++ b/arch/arm/mach-bcm/platsmp-brcmstb.c
@@ -356,7 +356,7 @@  static int brcmstb_boot_secondary(unsigned int cpu, struct task_struct *idle)
 	return 0;
 }
 
-static struct smp_operations brcmstb_smp_ops __initdata = {
+static const struct smp_operations brcmstb_smp_ops __initconst = {
 	.smp_prepare_cpus	= brcmstb_cpu_ctrl_setup,
 	.smp_boot_secondary	= brcmstb_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-berlin/platsmp.c b/arch/arm/mach-berlin/platsmp.c
index 405cd37..93f9068 100644
--- a/arch/arm/mach-berlin/platsmp.c
+++ b/arch/arm/mach-berlin/platsmp.c
@@ -119,7 +119,7 @@  static int berlin_cpu_kill(unsigned int cpu)
 }
 #endif
 
-static struct smp_operations berlin_smp_ops __initdata = {
+static const struct smp_operations berlin_smp_ops __initconst = {
 	.smp_prepare_cpus	= berlin_smp_prepare_cpus,
 	.smp_boot_secondary	= berlin_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 1534925..e349a03 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -149,7 +149,7 @@  static inline void exynos_pm_init(void) {}
 extern void exynos_cpu_resume(void);
 extern void exynos_cpu_resume_ns(void);
 
-extern struct smp_operations exynos_smp_ops;
+extern const struct smp_operations exynos_smp_ops;
 
 extern void exynos_cpu_power_down(int cpu);
 extern void exynos_cpu_power_up(int cpu);
diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
index 98a2c0c..5bd9559 100644
--- a/arch/arm/mach-exynos/platsmp.c
+++ b/arch/arm/mach-exynos/platsmp.c
@@ -479,7 +479,7 @@  static void exynos_cpu_die(unsigned int cpu)
 }
 #endif /* CONFIG_HOTPLUG_CPU */
 
-struct smp_operations exynos_smp_ops __initdata = {
+const struct smp_operations exynos_smp_ops __initconst = {
 	.smp_init_cpus		= exynos_smp_init_cpus,
 	.smp_prepare_cpus	= exynos_smp_prepare_cpus,
 	.smp_secondary_init	= exynos_secondary_init,
diff --git a/arch/arm/mach-hisi/platmcpm.c b/arch/arm/mach-hisi/platmcpm.c
index b5f8f5f..4b653a8 100644
--- a/arch/arm/mach-hisi/platmcpm.c
+++ b/arch/arm/mach-hisi/platmcpm.c
@@ -239,7 +239,7 @@  err:
 }
 #endif
 
-static struct smp_operations __initdata hip04_smp_ops = {
+static const struct smp_operations hip04_smp_ops __initconst = {
 	.smp_boot_secondary	= hip04_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
 	.cpu_die		= hip04_cpu_die,
diff --git a/arch/arm/mach-hisi/platsmp.c b/arch/arm/mach-hisi/platsmp.c
index 3c5237d..47ed32c 100644
--- a/arch/arm/mach-hisi/platsmp.c
+++ b/arch/arm/mach-hisi/platsmp.c
@@ -89,7 +89,7 @@  static int hi3xxx_boot_secondary(unsigned int cpu, struct task_struct *idle)
 	return 0;
 }
 
-static struct smp_operations hi3xxx_smp_ops __initdata = {
+static const struct smp_operations hi3xxx_smp_ops __initconst = {
 	.smp_prepare_cpus	= hi3xxx_smp_prepare_cpus,
 	.smp_boot_secondary	= hi3xxx_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
@@ -126,7 +126,7 @@  static int hix5hd2_boot_secondary(unsigned int cpu, struct task_struct *idle)
 }
 
 
-static struct smp_operations hix5hd2_smp_ops __initdata = {
+static const struct smp_operations hix5hd2_smp_ops __initconst = {
 	.smp_prepare_cpus	= hisi_common_smp_prepare_cpus,
 	.smp_boot_secondary	= hix5hd2_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
@@ -176,7 +176,7 @@  static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
 	return 0;
 }
 
-static struct smp_operations hip01_smp_ops __initdata = {
+static const struct smp_operations hip01_smp_ops __initconst = {
 	.smp_prepare_cpus       = hisi_common_smp_prepare_cpus,
 	.smp_boot_secondary     = hip01_boot_secondary,
 };
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index e2d5383..32b83f0 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -153,7 +153,7 @@  void imx_init_l2cache(void);
 static inline void imx_init_l2cache(void) {}
 #endif
 
-extern struct smp_operations imx_smp_ops;
-extern struct smp_operations ls1021a_smp_ops;
+extern const struct smp_operations imx_smp_ops;
+extern const struct smp_operations ls1021a_smp_ops;
 
 #endif
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c
index 7f27001..711dbbd 100644
--- a/arch/arm/mach-imx/platsmp.c
+++ b/arch/arm/mach-imx/platsmp.c
@@ -88,7 +88,7 @@  static void __init imx_smp_prepare_cpus(unsigned int max_cpus)
 	sync_cache_w(&g_diag_reg);
 }
 
-struct smp_operations  imx_smp_ops __initdata = {
+const struct smp_operations imx_smp_ops __initconst = {
 	.smp_init_cpus		= imx_smp_init_cpus,
 	.smp_prepare_cpus	= imx_smp_prepare_cpus,
 	.smp_boot_secondary	= imx_boot_secondary,
@@ -123,7 +123,7 @@  static void __init ls1021a_smp_prepare_cpus(unsigned int max_cpus)
 	iounmap(dcfg_base);
 }
 
-struct smp_operations  ls1021a_smp_ops __initdata = {
+const struct smp_operations ls1021a_smp_ops __initconst = {
 	.smp_prepare_cpus	= ls1021a_smp_prepare_cpus,
 	.smp_boot_secondary	= ls1021a_boot_secondary,
 };
diff --git a/arch/arm/mach-keystone/keystone.h b/arch/arm/mach-keystone/keystone.h
index cd04a1c..33eaa03 100644
--- a/arch/arm/mach-keystone/keystone.h
+++ b/arch/arm/mach-keystone/keystone.h
@@ -15,7 +15,7 @@ 
 
 #ifndef __ASSEMBLER__
 
-extern struct smp_operations keystone_smp_ops;
+extern const struct smp_operations keystone_smp_ops;
 extern void secondary_startup(void);
 extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr);
 extern int keystone_pm_runtime_init(void);
diff --git a/arch/arm/mach-keystone/platsmp.c b/arch/arm/mach-keystone/platsmp.c
index 4bbb184..5665276 100644
--- a/arch/arm/mach-keystone/platsmp.c
+++ b/arch/arm/mach-keystone/platsmp.c
@@ -39,6 +39,6 @@  static int keystone_smp_boot_secondary(unsigned int cpu,
 	return error;
 }
 
-struct smp_operations keystone_smp_ops __initdata = {
+const struct smp_operations keystone_smp_ops __initconst = {
 	.smp_boot_secondary	= keystone_smp_boot_secondary,
 };
diff --git a/arch/arm/mach-mediatek/platsmp.c b/arch/arm/mach-mediatek/platsmp.c
index 8141f3f..a1b07ee 100644
--- a/arch/arm/mach-mediatek/platsmp.c
+++ b/arch/arm/mach-mediatek/platsmp.c
@@ -128,13 +128,13 @@  static void __init mtk_smp_prepare_cpus(unsigned int max_cpus)
 	__mtk_smp_prepare_cpus(max_cpus, 0);
 }
 
-static struct smp_operations mt81xx_tz_smp_ops __initdata = {
+static const struct smp_operations mt81xx_tz_smp_ops __initconst = {
 	.smp_prepare_cpus = mtk_tz_smp_prepare_cpus,
 	.smp_boot_secondary = mtk_boot_secondary,
 };
 CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops);
 
-static struct smp_operations mt6589_smp_ops __initdata = {
+static const struct smp_operations mt6589_smp_ops __initconst = {
 	.smp_prepare_cpus = mtk_smp_prepare_cpus,
 	.smp_boot_secondary = mtk_boot_secondary,
 };
diff --git a/arch/arm/mach-mvebu/armada-370-xp.h b/arch/arm/mach-mvebu/armada-370-xp.h
index c55bbf8..09413b6 100644
--- a/arch/arm/mach-mvebu/armada-370-xp.h
+++ b/arch/arm/mach-mvebu/armada-370-xp.h
@@ -17,7 +17,7 @@ 
 
 #ifdef CONFIG_SMP
 void armada_xp_secondary_startup(void);
-extern struct smp_operations armada_xp_smp_ops;
+extern const struct smp_operations armada_xp_smp_ops;
 #endif
 
 #endif /* __MACH_ARMADA_370_XP_H */
diff --git a/arch/arm/mach-mvebu/platsmp-a9.c b/arch/arm/mach-mvebu/platsmp-a9.c
index 3d50004..d715dec 100644
--- a/arch/arm/mach-mvebu/platsmp-a9.c
+++ b/arch/arm/mach-mvebu/platsmp-a9.c
@@ -93,11 +93,11 @@  static int armada_38x_cpu_kill(unsigned int cpu)
 }
 #endif
 
-static struct smp_operations mvebu_cortex_a9_smp_ops __initdata = {
+static const struct smp_operations mvebu_cortex_a9_smp_ops __initconst = {
 	.smp_boot_secondary	= mvebu_cortex_a9_boot_secondary,
 };
 
-static struct smp_operations armada_38x_smp_ops __initdata = {
+static const struct smp_operations armada_38x_smp_ops __initconst = {
 	.smp_boot_secondary	= mvebu_cortex_a9_boot_secondary,
 	.smp_secondary_init     = armada_38x_secondary_init,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-mvebu/platsmp.c b/arch/arm/mach-mvebu/platsmp.c
index 58cc8c1..f9597b7 100644
--- a/arch/arm/mach-mvebu/platsmp.c
+++ b/arch/arm/mach-mvebu/platsmp.c
@@ -170,7 +170,7 @@  static int armada_xp_cpu_kill(unsigned int cpu)
 }
 #endif
 
-struct smp_operations armada_xp_smp_ops __initdata = {
+const struct smp_operations armada_xp_smp_ops __initconst = {
 	.smp_init_cpus		= armada_xp_smp_init_cpus,
 	.smp_prepare_cpus	= armada_xp_smp_prepare_cpus,
 	.smp_boot_secondary	= armada_xp_boot_secondary,
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 0cba957..f7666b9 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -270,7 +270,7 @@  extern u32 omap_read_auxcoreboot0(void);
 
 extern void omap4_cpu_die(unsigned int cpu);
 
-extern struct smp_operations omap4_smp_ops;
+extern const struct smp_operations omap4_smp_ops;
 
 extern void omap5_secondary_startup(void);
 extern void omap5_secondary_hyp_startup(void);
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
index 5305ec7..ddcd1d2 100644
--- a/arch/arm/mach-omap2/omap-smp.c
+++ b/arch/arm/mach-omap2/omap-smp.c
@@ -241,7 +241,7 @@  static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
 
 }
 
-struct smp_operations omap4_smp_ops __initdata = {
+const struct smp_operations omap4_smp_ops __initconst = {
 	.smp_init_cpus		= omap4_smp_init_cpus,
 	.smp_prepare_cpus	= omap4_smp_prepare_cpus,
 	.smp_secondary_init	= omap4_secondary_init,
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h
index 3916a66..6d77b62 100644
--- a/arch/arm/mach-prima2/common.h
+++ b/arch/arm/mach-prima2/common.h
@@ -15,7 +15,7 @@ 
 #include <asm/mach/time.h>
 #include <asm/exception.h>
 
-extern struct smp_operations   sirfsoc_smp_ops;
+extern const struct smp_operations sirfsoc_smp_ops;
 extern void sirfsoc_secondary_startup(void);
 extern void sirfsoc_cpu_die(unsigned int cpu);
 
diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c
index e46c910..0875b99 100644
--- a/arch/arm/mach-prima2/platsmp.c
+++ b/arch/arm/mach-prima2/platsmp.c
@@ -112,7 +112,7 @@  static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle)
 	return pen_release != -1 ? -ENOSYS : 0;
 }
 
-struct smp_operations sirfsoc_smp_ops __initdata = {
+const struct smp_operations sirfsoc_smp_ops __initconst = {
 	.smp_secondary_init     = sirfsoc_secondary_init,
 	.smp_boot_secondary     = sirfsoc_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-qcom/platsmp.c b/arch/arm/mach-qcom/platsmp.c
index 9b00123..5494c9e 100644
--- a/arch/arm/mach-qcom/platsmp.c
+++ b/arch/arm/mach-qcom/platsmp.c
@@ -332,7 +332,7 @@  static void __init qcom_smp_prepare_cpus(unsigned int max_cpus)
 	}
 }
 
-static struct smp_operations smp_msm8660_ops __initdata = {
+static const struct smp_operations smp_msm8660_ops __initconst = {
 	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
 	.smp_secondary_init	= qcom_secondary_init,
 	.smp_boot_secondary	= msm8660_boot_secondary,
@@ -342,7 +342,7 @@  static struct smp_operations smp_msm8660_ops __initdata = {
 };
 CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops);
 
-static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
+static const struct smp_operations qcom_smp_kpssv1_ops __initconst = {
 	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
 	.smp_secondary_init	= qcom_secondary_init,
 	.smp_boot_secondary	= kpssv1_boot_secondary,
@@ -352,7 +352,7 @@  static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
 };
 CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops);
 
-static struct smp_operations qcom_smp_kpssv2_ops __initdata = {
+static const struct smp_operations qcom_smp_kpssv2_ops __initconst = {
 	.smp_prepare_cpus	= qcom_smp_prepare_cpus,
 	.smp_secondary_init	= qcom_secondary_init,
 	.smp_boot_secondary	= kpssv2_boot_secondary,
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
index 868ece2..670ee0e 100644
--- a/arch/arm/mach-realview/core.h
+++ b/arch/arm/mach-realview/core.h
@@ -54,7 +54,7 @@  extern int realview_usb_register(struct resource *res);
 extern void realview_init_early(void);
 extern void realview_fixup(struct tag *tags, char **from);
 
-extern struct smp_operations realview_smp_ops;
+extern const struct smp_operations realview_smp_ops;
 extern void realview_cpu_die(unsigned int cpu);
 
 #endif
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index 98e3052..dc29029 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -75,7 +75,7 @@  static void __init realview_smp_prepare_cpus(unsigned int max_cpus)
 		     __io_address(REALVIEW_SYS_FLAGSSET));
 }
 
-struct smp_operations realview_smp_ops __initdata = {
+const struct smp_operations realview_smp_ops __initconst = {
 	.smp_init_cpus		= realview_smp_init_cpus,
 	.smp_prepare_cpus	= realview_smp_prepare_cpus,
 	.smp_secondary_init	= versatile_secondary_init,
diff --git a/arch/arm/mach-rockchip/platsmp.c b/arch/arm/mach-rockchip/platsmp.c
index 3e7a4b7..938888f 100644
--- a/arch/arm/mach-rockchip/platsmp.c
+++ b/arch/arm/mach-rockchip/platsmp.c
@@ -340,7 +340,7 @@  static void rockchip_cpu_die(unsigned int cpu)
 }
 #endif
 
-static struct smp_operations rockchip_smp_ops __initdata = {
+static const struct smp_operations rockchip_smp_ops __initconst = {
 	.smp_prepare_cpus	= rockchip_smp_prepare_cpus,
 	.smp_boot_secondary	= rockchip_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/r8a7779.h b/arch/arm/mach-shmobile/r8a7779.h
index e1aaa2e..2a5f773 100644
--- a/arch/arm/mach-shmobile/r8a7779.h
+++ b/arch/arm/mach-shmobile/r8a7779.h
@@ -3,6 +3,6 @@ 
 
 extern void r8a7779_pm_init(void);
 
-extern struct smp_operations r8a7779_smp_ops;
+extern const struct smp_operations r8a7779_smp_ops;
 
 #endif /* __ASM_R8A7779_H__ */
diff --git a/arch/arm/mach-shmobile/r8a7790.h b/arch/arm/mach-shmobile/r8a7790.h
index 1a46d02..136f345 100644
--- a/arch/arm/mach-shmobile/r8a7790.h
+++ b/arch/arm/mach-shmobile/r8a7790.h
@@ -1,6 +1,6 @@ 
 #ifndef __ASM_R8A7790_H__
 #define __ASM_R8A7790_H__
 
-extern struct smp_operations r8a7790_smp_ops;
+extern const struct smp_operations r8a7790_smp_ops;
 
 #endif /* __ASM_R8A7790_H__ */
diff --git a/arch/arm/mach-shmobile/r8a7791.h b/arch/arm/mach-shmobile/r8a7791.h
index 7ca0b7d..cf7a840 100644
--- a/arch/arm/mach-shmobile/r8a7791.h
+++ b/arch/arm/mach-shmobile/r8a7791.h
@@ -1,6 +1,6 @@ 
 #ifndef __ASM_R8A7791_H__
 #define __ASM_R8A7791_H__
 
-extern struct smp_operations r8a7791_smp_ops;
+extern const struct smp_operations r8a7791_smp_ops;
 
 #endif /* __ASM_R8A7791_H__ */
diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c
index 37f7b15..10b7cb5 100644
--- a/arch/arm/mach-shmobile/setup-emev2.c
+++ b/arch/arm/mach-shmobile/setup-emev2.c
@@ -42,7 +42,7 @@  static const char *const emev2_boards_compat_dt[] __initconst = {
 	NULL,
 };
 
-extern struct smp_operations emev2_smp_ops;
+extern const struct smp_operations emev2_smp_ops;
 
 DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")
 	.smp		= smp_ops(emev2_smp_ops),
diff --git a/arch/arm/mach-shmobile/sh73a0.h b/arch/arm/mach-shmobile/sh73a0.h
index 3964680..50ef24f 100644
--- a/arch/arm/mach-shmobile/sh73a0.h
+++ b/arch/arm/mach-shmobile/sh73a0.h
@@ -1,6 +1,6 @@ 
 #ifndef __ASM_SH73A0_H__
 #define __ASM_SH73A0_H__
 
-extern struct smp_operations sh73a0_smp_ops;
+extern const struct smp_operations sh73a0_smp_ops;
 
 #endif /* __ASM_SH73A0_H__ */
diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c
index baff3b5..adbac69 100644
--- a/arch/arm/mach-shmobile/smp-emev2.c
+++ b/arch/arm/mach-shmobile/smp-emev2.c
@@ -49,7 +49,7 @@  static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
 	shmobile_smp_scu_prepare_cpus(max_cpus);
 }
 
-struct smp_operations emev2_smp_ops __initdata = {
+const struct smp_operations emev2_smp_ops __initconst = {
 	.smp_prepare_cpus	= emev2_smp_prepare_cpus,
 	.smp_boot_secondary	= emev2_boot_secondary,
 };
diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c
index 353562b8..b854fe2 100644
--- a/arch/arm/mach-shmobile/smp-r8a7779.c
+++ b/arch/arm/mach-shmobile/smp-r8a7779.c
@@ -117,7 +117,7 @@  static int r8a7779_cpu_kill(unsigned int cpu)
 }
 #endif /* CONFIG_HOTPLUG_CPU */
 
-struct smp_operations r8a7779_smp_ops  __initdata = {
+const struct smp_operations r8a7779_smp_ops  __initconst = {
 	.smp_prepare_cpus	= r8a7779_smp_prepare_cpus,
 	.smp_boot_secondary	= r8a7779_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/smp-r8a7790.c b/arch/arm/mach-shmobile/smp-r8a7790.c
index 4b33d43..f6426c6 100644
--- a/arch/arm/mach-shmobile/smp-r8a7790.c
+++ b/arch/arm/mach-shmobile/smp-r8a7790.c
@@ -60,7 +60,7 @@  static void __init r8a7790_smp_prepare_cpus(unsigned int max_cpus)
 	rcar_sysc_power_up(&r8a7790_ca7_scu);
 }
 
-struct smp_operations r8a7790_smp_ops __initdata = {
+const struct smp_operations r8a7790_smp_ops __initconst = {
 	.smp_prepare_cpus	= r8a7790_smp_prepare_cpus,
 	.smp_boot_secondary	= shmobile_smp_apmu_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/smp-r8a7791.c b/arch/arm/mach-shmobile/smp-r8a7791.c
index b2508c0..2d6417a 100644
--- a/arch/arm/mach-shmobile/smp-r8a7791.c
+++ b/arch/arm/mach-shmobile/smp-r8a7791.c
@@ -54,7 +54,7 @@  static int r8a7791_smp_boot_secondary(unsigned int cpu,
 	return shmobile_smp_apmu_boot_secondary(cpu, idle);
 }
 
-struct smp_operations r8a7791_smp_ops __initdata = {
+const struct smp_operations r8a7791_smp_ops __initconst = {
 	.smp_prepare_cpus	= r8a7791_smp_prepare_cpus,
 	.smp_boot_secondary	= r8a7791_smp_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c
index bc2824a..ee1a4b7 100644
--- a/arch/arm/mach-shmobile/smp-sh73a0.c
+++ b/arch/arm/mach-shmobile/smp-sh73a0.c
@@ -56,7 +56,7 @@  static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus)
 	shmobile_smp_scu_prepare_cpus(max_cpus);
 }
 
-struct smp_operations sh73a0_smp_ops __initdata = {
+const struct smp_operations sh73a0_smp_ops __initconst = {
 	.smp_prepare_cpus	= sh73a0_smp_prepare_cpus,
 	.smp_boot_secondary	= sh73a0_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c
index 15c8ce8..cbb0a54 100644
--- a/arch/arm/mach-socfpga/platsmp.c
+++ b/arch/arm/mach-socfpga/platsmp.c
@@ -117,7 +117,7 @@  static int socfpga_cpu_kill(unsigned int cpu)
 	return 1;
 }
 
-static struct smp_operations socfpga_smp_ops __initdata = {
+static const struct smp_operations socfpga_smp_ops __initconst = {
 	.smp_prepare_cpus	= socfpga_smp_prepare_cpus,
 	.smp_boot_secondary	= socfpga_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
@@ -126,7 +126,7 @@  static struct smp_operations socfpga_smp_ops __initdata = {
 #endif
 };
 
-static struct smp_operations socfpga_a10_smp_ops __initdata = {
+static const struct smp_operations socfpga_a10_smp_ops __initconst = {
 	.smp_prepare_cpus	= socfpga_smp_prepare_cpus,
 	.smp_boot_secondary	= socfpga_a10_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-spear/generic.h b/arch/arm/mach-spear/generic.h
index 0664091..909b97c0 100644
--- a/arch/arm/mach-spear/generic.h
+++ b/arch/arm/mach-spear/generic.h
@@ -39,7 +39,7 @@  void spear_restart(enum reboot_mode, const char *);
 void spear13xx_secondary_startup(void);
 void spear13xx_cpu_die(unsigned int cpu);
 
-extern struct smp_operations spear13xx_smp_ops;
+extern const struct smp_operations spear13xx_smp_ops;
 
 #ifdef CONFIG_MACH_SPEAR1310
 void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base);
diff --git a/arch/arm/mach-spear/platsmp.c b/arch/arm/mach-spear/platsmp.c
index fd42977..8d1e2d5 100644
--- a/arch/arm/mach-spear/platsmp.c
+++ b/arch/arm/mach-spear/platsmp.c
@@ -120,7 +120,7 @@  static void __init spear13xx_smp_prepare_cpus(unsigned int max_cpus)
 	__raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION);
 }
 
-struct smp_operations spear13xx_smp_ops __initdata = {
+const struct smp_operations spear13xx_smp_ops __initconst = {
        .smp_init_cpus		= spear13xx_smp_init_cpus,
        .smp_prepare_cpus	= spear13xx_smp_prepare_cpus,
        .smp_secondary_init	= spear13xx_secondary_init,
diff --git a/arch/arm/mach-sti/platsmp.c b/arch/arm/mach-sti/platsmp.c
index c4ad6ea..ea5a227 100644
--- a/arch/arm/mach-sti/platsmp.c
+++ b/arch/arm/mach-sti/platsmp.c
@@ -156,7 +156,7 @@  static void __init sti_smp_prepare_cpus(unsigned int max_cpus)
 	}
 }
 
-struct smp_operations __initdata sti_smp_ops = {
+const struct smp_operations sti_smp_ops __initconst = {
 	.smp_prepare_cpus	= sti_smp_prepare_cpus,
 	.smp_secondary_init	= sti_secondary_init,
 	.smp_boot_secondary	= sti_boot_secondary,
diff --git a/arch/arm/mach-sti/smp.h b/arch/arm/mach-sti/smp.h
index ae22707..d8a2f87 100644
--- a/arch/arm/mach-sti/smp.h
+++ b/arch/arm/mach-sti/smp.h
@@ -12,7 +12,7 @@ 
 #ifndef __MACH_STI_SMP_H
 #define __MACH_STI_SMP_H
 
-extern struct smp_operations	sti_smp_ops;
+extern const struct smp_operations sti_smp_ops;
 
 void sti_secondary_startup(void);
 
diff --git a/arch/arm/mach-sunxi/platsmp.c b/arch/arm/mach-sunxi/platsmp.c
index e8483ec..6642267 100644
--- a/arch/arm/mach-sunxi/platsmp.c
+++ b/arch/arm/mach-sunxi/platsmp.c
@@ -116,7 +116,7 @@  static int sun6i_smp_boot_secondary(unsigned int cpu,
 	return 0;
 }
 
-static struct smp_operations sun6i_smp_ops __initdata = {
+static const struct smp_operations sun6i_smp_ops __initconst = {
 	.smp_prepare_cpus	= sun6i_smp_prepare_cpus,
 	.smp_boot_secondary	= sun6i_smp_boot_secondary,
 };
@@ -185,7 +185,7 @@  static int sun8i_smp_boot_secondary(unsigned int cpu,
 	return 0;
 }
 
-struct smp_operations sun8i_smp_ops __initdata = {
+static const struct smp_operations sun8i_smp_ops __initconst = {
 	.smp_prepare_cpus	= sun8i_smp_prepare_cpus,
 	.smp_boot_secondary	= sun8i_smp_boot_secondary,
 };
diff --git a/arch/arm/mach-tegra/common.h b/arch/arm/mach-tegra/common.h
index 5900cc4..1f6fb80 100644
--- a/arch/arm/mach-tegra/common.h
+++ b/arch/arm/mach-tegra/common.h
@@ -1,4 +1,4 @@ 
-extern struct smp_operations tegra_smp_ops;
+extern const struct smp_operations tegra_smp_ops;
 
 extern int tegra_cpu_kill(unsigned int cpu);
 extern void tegra_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
index b450866..f3f61db 100644
--- a/arch/arm/mach-tegra/platsmp.c
+++ b/arch/arm/mach-tegra/platsmp.c
@@ -192,7 +192,7 @@  static void __init tegra_smp_prepare_cpus(unsigned int max_cpus)
 		scu_enable(IO_ADDRESS(scu_a9_get_base()));
 }
 
-struct smp_operations tegra_smp_ops __initdata = {
+const struct smp_operations tegra_smp_ops __initconst = {
 	.smp_prepare_cpus	= tegra_smp_prepare_cpus,
 	.smp_secondary_init	= tegra_secondary_init,
 	.smp_boot_secondary	= tegra_boot_secondary,
diff --git a/arch/arm/mach-uniphier/platsmp.c b/arch/arm/mach-uniphier/platsmp.c
index f057766..e1cfc1d 100644
--- a/arch/arm/mach-uniphier/platsmp.c
+++ b/arch/arm/mach-uniphier/platsmp.c
@@ -201,7 +201,7 @@  static int __init uniphier_smp_boot_secondary(unsigned int cpu,
 	return 0;
 }
 
-static struct smp_operations uniphier_smp_ops __initdata = {
+static const struct smp_operations uniphier_smp_ops __initconst = {
 	.smp_prepare_cpus	= uniphier_smp_prepare_cpus,
 	.smp_boot_secondary	= uniphier_smp_boot_secondary,
 };
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
index 70766b96..88b8ab4 100644
--- a/arch/arm/mach-ux500/platsmp.c
+++ b/arch/arm/mach-ux500/platsmp.c
@@ -98,7 +98,7 @@  static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle)
 	return 0;
 }
 
-struct smp_operations ux500_smp_ops __initdata = {
+static const struct smp_operations ux500_smp_ops __initconst = {
 	.smp_prepare_cpus	= ux500_smp_prepare_cpus,
 	.smp_boot_secondary	= ux500_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h
index 2a11d3a..a162ab4 100644
--- a/arch/arm/mach-vexpress/core.h
+++ b/arch/arm/mach-vexpress/core.h
@@ -1,5 +1,5 @@ 
 bool vexpress_smp_init_ops(void);
 
-extern struct smp_operations	vexpress_smp_dt_ops;
+extern const struct smp_operations vexpress_smp_dt_ops;
 
 extern void vexpress_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c
index 83188cf..8b8d072 100644
--- a/arch/arm/mach-vexpress/platsmp.c
+++ b/arch/arm/mach-vexpress/platsmp.c
@@ -64,7 +64,7 @@  static void __init vexpress_smp_dt_prepare_cpus(unsigned int max_cpus)
 	vexpress_flags_set(virt_to_phys(versatile_secondary_startup));
 }
 
-struct smp_operations __initdata vexpress_smp_dt_ops = {
+const struct smp_operations vexpress_smp_dt_ops __initconst = {
 	.smp_prepare_cpus	= vexpress_smp_dt_prepare_cpus,
 	.smp_secondary_init	= versatile_secondary_init,
 	.smp_boot_secondary	= versatile_boot_secondary,
diff --git a/arch/arm/mach-zx/platsmp.c b/arch/arm/mach-zx/platsmp.c
index a369398..0297f92 100644
--- a/arch/arm/mach-zx/platsmp.c
+++ b/arch/arm/mach-zx/platsmp.c
@@ -176,7 +176,7 @@  static void zx_secondary_init(unsigned int cpu)
 	scu_power_mode(scu_base, SCU_PM_NORMAL);
 }
 
-struct smp_operations zx_smp_ops __initdata = {
+static const struct smp_operations zx_smp_ops __initconst = {
 	.smp_prepare_cpus	= zx_smp_prepare_cpus,
 	.smp_secondary_init	= zx_secondary_init,
 	.smp_boot_secondary	= zx_boot_secondary,
diff --git a/arch/arm/mach-zynq/common.h b/arch/arm/mach-zynq/common.h
index 79cda2e..e771933 100644
--- a/arch/arm/mach-zynq/common.h
+++ b/arch/arm/mach-zynq/common.h
@@ -30,7 +30,7 @@  extern char zynq_secondary_trampoline;
 extern char zynq_secondary_trampoline_jump;
 extern char zynq_secondary_trampoline_end;
 extern int zynq_cpun_start(u32 address, int cpu);
-extern struct smp_operations zynq_smp_ops __initdata;
+extern const struct smp_operations zynq_smp_ops;
 #endif
 
 extern void __iomem *zynq_scu_base;
diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c
index f66816c..7cd9865 100644
--- a/arch/arm/mach-zynq/platsmp.c
+++ b/arch/arm/mach-zynq/platsmp.c
@@ -157,7 +157,7 @@  static void zynq_cpu_die(unsigned int cpu)
 }
 #endif
 
-struct smp_operations zynq_smp_ops __initdata = {
+const struct smp_operations zynq_smp_ops __initconst = {
 	.smp_init_cpus		= zynq_smp_init_cpus,
 	.smp_prepare_cpus	= zynq_smp_prepare_cpus,
 	.smp_boot_secondary	= zynq_boot_secondary,