aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/Kconfig3
-rw-r--r--arch/arm/common/mcpm_platsmp.c2
-rw-r--r--arch/arm/include/asm/psci.h2
-rw-r--r--arch/arm/kernel/psci_smp.c2
-rw-r--r--arch/arm/mach-alpine/Kconfig3
-rw-r--r--arch/arm/mach-alpine/platsmp.c2
-rw-r--r--arch/arm/mach-at91/Kconfig15
-rw-r--r--arch/arm/mach-axxia/Kconfig3
-rw-r--r--arch/arm/mach-axxia/platsmp.c2
-rw-r--r--arch/arm/mach-bcm/Kconfig27
-rw-r--r--arch/arm/mach-bcm/bcm63xx_smp.c2
-rw-r--r--arch/arm/mach-bcm/kona_smp.c2
-rw-r--r--arch/arm/mach-bcm/platsmp-brcmstb.c2
-rw-r--r--arch/arm/mach-berlin/Kconfig3
-rw-r--r--arch/arm/mach-berlin/platsmp.c2
-rw-r--r--arch/arm/mach-cns3xxx/Kconfig3
-rw-r--r--arch/arm/mach-exynos/Kconfig3
-rw-r--r--arch/arm/mach-exynos/common.h2
-rw-r--r--arch/arm/mach-exynos/platsmp.c2
-rw-r--r--arch/arm/mach-highbank/Kconfig3
-rw-r--r--arch/arm/mach-hisi/Kconfig12
-rw-r--r--arch/arm/mach-hisi/core.h3
-rw-r--r--arch/arm/mach-hisi/platmcpm.c2
-rw-r--r--arch/arm/mach-hisi/platsmp.c6
-rw-r--r--arch/arm/mach-imx/Kconfig6
-rw-r--r--arch/arm/mach-imx/common.h4
-rw-r--r--arch/arm/mach-imx/platsmp.c4
-rw-r--r--arch/arm/mach-integrator/Kconfig3
-rw-r--r--arch/arm/mach-keystone/keystone.h2
-rw-r--r--arch/arm/mach-keystone/platsmp.c2
-rw-r--r--arch/arm/mach-mediatek/Kconfig3
-rw-r--r--arch/arm/mach-mediatek/platsmp.c4
-rw-r--r--arch/arm/mach-meson/Kconfig3
-rw-r--r--arch/arm/mach-moxart/Kconfig3
-rw-r--r--arch/arm/mach-mvebu/Kconfig24
-rw-r--r--arch/arm/mach-mvebu/armada-370-xp.h2
-rw-r--r--arch/arm/mach-mvebu/platsmp-a9.c4
-rw-r--r--arch/arm/mach-mvebu/platsmp.c2
-rw-r--r--arch/arm/mach-omap2/common.h2
-rw-r--r--arch/arm/mach-omap2/omap-smp.c2
-rw-r--r--arch/arm/mach-picoxcell/Kconfig3
-rw-r--r--arch/arm/mach-prima2/Kconfig3
-rw-r--r--arch/arm/mach-prima2/common.h2
-rw-r--r--arch/arm/mach-prima2/platsmp.c2
-rw-r--r--arch/arm/mach-qcom/Kconfig3
-rw-r--r--arch/arm/mach-qcom/platsmp.c6
-rw-r--r--arch/arm/mach-realview/core.h2
-rw-r--r--arch/arm/mach-realview/platsmp.c2
-rw-r--r--arch/arm/mach-rockchip/Kconfig3
-rw-r--r--arch/arm/mach-rockchip/platsmp.c2
-rw-r--r--arch/arm/mach-s5pv210/Kconfig3
-rw-r--r--arch/arm/mach-shmobile/Kconfig4
-rw-r--r--arch/arm/mach-shmobile/r8a7779.h2
-rw-r--r--arch/arm/mach-shmobile/r8a7790.h2
-rw-r--r--arch/arm/mach-shmobile/r8a7791.h2
-rw-r--r--arch/arm/mach-shmobile/setup-emev2.c2
-rw-r--r--arch/arm/mach-shmobile/sh73a0.h2
-rw-r--r--arch/arm/mach-shmobile/smp-emev2.c2
-rw-r--r--arch/arm/mach-shmobile/smp-r8a7779.c2
-rw-r--r--arch/arm/mach-shmobile/smp-r8a7790.c2
-rw-r--r--arch/arm/mach-shmobile/smp-r8a7791.c2
-rw-r--r--arch/arm/mach-shmobile/smp-sh73a0.c2
-rw-r--r--arch/arm/mach-socfpga/Kconfig3
-rw-r--r--arch/arm/mach-socfpga/platsmp.c4
-rw-r--r--arch/arm/mach-spear/Kconfig3
-rw-r--r--arch/arm/mach-spear/generic.h2
-rw-r--r--arch/arm/mach-spear/platsmp.c2
-rw-r--r--arch/arm/mach-sti/Kconfig3
-rw-r--r--arch/arm/mach-sti/platsmp.c2
-rw-r--r--arch/arm/mach-sti/smp.h2
-rw-r--r--arch/arm/mach-sunxi/Kconfig3
-rw-r--r--arch/arm/mach-sunxi/platsmp.c4
-rw-r--r--arch/arm/mach-tegra/Kconfig3
-rw-r--r--arch/arm/mach-tegra/common.h2
-rw-r--r--arch/arm/mach-tegra/platsmp.c2
-rw-r--r--arch/arm/mach-u300/Kconfig4
-rw-r--r--arch/arm/mach-uniphier/platsmp.c2
-rw-r--r--arch/arm/mach-ux500/Kconfig4
-rw-r--r--arch/arm/mach-ux500/Makefile2
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c2
-rw-r--r--arch/arm/mach-ux500/cpu.c1
-rw-r--r--arch/arm/mach-ux500/platsmp.c2
-rw-r--r--arch/arm/mach-ux500/setup.h3
-rw-r--r--arch/arm/mach-ux500/timer.c48
-rw-r--r--arch/arm/mach-vexpress/Kconfig3
-rw-r--r--arch/arm/mach-vexpress/core.h2
-rw-r--r--arch/arm/mach-vexpress/platsmp.c2
-rw-r--r--arch/arm/mach-zx/Kconfig3
-rw-r--r--arch/arm/mach-zx/platsmp.c2
-rw-r--r--arch/arm/mach-zynq/Kconfig3
-rw-r--r--arch/arm/mach-zynq/common.h2
-rw-r--r--arch/arm/mach-zynq/platsmp.c2
-rw-r--r--drivers/clocksource/clksrc-dbx500-prcmu.c9
-rw-r--r--include/linux/clksrc-dbx500-prcmu.h20
94 files changed, 181 insertions, 203 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b934d19a154c..8d55a3dc43bd 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -697,7 +697,8 @@ config ARCH_MULTI_CPU_AUTO
697endmenu 697endmenu
698 698
699config ARCH_VIRT 699config ARCH_VIRT
700 bool "Dummy Virtual Machine" if ARCH_MULTI_V7 700 bool "Dummy Virtual Machine"
701 depends on ARCH_MULTI_V7
701 select ARM_AMBA 702 select ARM_AMBA
702 select ARM_GIC 703 select ARM_GIC
703 select ARM_GIC_V3 704 select ARM_GIC_V3
diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c
index 2b25b6038f66..c773157646d3 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)
83 83
84#endif 84#endif
85 85
86static struct smp_operations __initdata mcpm_smp_ops = { 86static const struct smp_operations mcpm_smp_ops __initconst = {
87 .smp_boot_secondary = mcpm_boot_secondary, 87 .smp_boot_secondary = mcpm_boot_secondary,
88 .smp_secondary_init = mcpm_secondary_init, 88 .smp_secondary_init = mcpm_secondary_init,
89#ifdef CONFIG_HOTPLUG_CPU 89#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
index 68ee3ce17b82..97735a8ff451 100644
--- a/arch/arm/include/asm/psci.h
+++ b/arch/arm/include/asm/psci.h
@@ -14,7 +14,7 @@
14#ifndef __ASM_ARM_PSCI_H 14#ifndef __ASM_ARM_PSCI_H
15#define __ASM_ARM_PSCI_H 15#define __ASM_ARM_PSCI_H
16 16
17extern struct smp_operations psci_smp_ops; 17extern const struct smp_operations psci_smp_ops;
18 18
19#ifdef CONFIG_ARM_PSCI 19#ifdef CONFIG_ARM_PSCI
20bool psci_smp_available(void); 20bool psci_smp_available(void);
diff --git a/arch/arm/kernel/psci_smp.c b/arch/arm/kernel/psci_smp.c
index 9d479b2ea40d..cb3fcaeb2233 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)
120 return (psci_ops.cpu_on != NULL); 120 return (psci_ops.cpu_on != NULL);
121} 121}
122 122
123struct smp_operations __initdata psci_smp_ops = { 123const struct smp_operations psci_smp_ops __initconst = {
124 .smp_boot_secondary = psci_boot_secondary, 124 .smp_boot_secondary = psci_boot_secondary,
125#ifdef CONFIG_HOTPLUG_CPU 125#ifdef CONFIG_HOTPLUG_CPU
126 .cpu_disable = psci_cpu_disable, 126 .cpu_disable = psci_cpu_disable,
diff --git a/arch/arm/mach-alpine/Kconfig b/arch/arm/mach-alpine/Kconfig
index 2c44b930505a..5c2d54f59f53 100644
--- a/arch/arm/mach-alpine/Kconfig
+++ b/arch/arm/mach-alpine/Kconfig
@@ -1,5 +1,6 @@
1config ARCH_ALPINE 1config ARCH_ALPINE
2 bool "Annapurna Labs Alpine platform" if ARCH_MULTI_V7 2 bool "Annapurna Labs Alpine platform"
3 depends on ARCH_MULTI_V7
3 select ARM_AMBA 4 select ARM_AMBA
4 select ARM_GIC 5 select ARM_GIC
5 select GENERIC_IRQ_CHIP 6 select GENERIC_IRQ_CHIP
diff --git a/arch/arm/mach-alpine/platsmp.c b/arch/arm/mach-alpine/platsmp.c
index f78429f48bd6..dd77ea25e7ca 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)
42 alpine_cpu_pm_init(); 42 alpine_cpu_pm_init();
43} 43}
44 44
45static struct smp_operations alpine_smp_ops __initdata = { 45static const struct smp_operations alpine_smp_ops __initconst = {
46 .smp_prepare_cpus = alpine_smp_prepare_cpus, 46 .smp_prepare_cpus = alpine_smp_prepare_cpus,
47 .smp_boot_secondary = alpine_boot_secondary, 47 .smp_boot_secondary = alpine_boot_secondary,
48}; 48};
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 28656c2b54a0..23be2e433097 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -8,7 +8,8 @@ menuconfig ARCH_AT91
8 8
9if ARCH_AT91 9if ARCH_AT91
10config SOC_SAMA5D2 10config SOC_SAMA5D2
11 bool "SAMA5D2 family" if ARCH_MULTI_V7 11 bool "SAMA5D2 family"
12 depends on ARCH_MULTI_V7
12 select SOC_SAMA5 13 select SOC_SAMA5
13 select CACHE_L2X0 14 select CACHE_L2X0
14 select HAVE_FB_ATMEL 15 select HAVE_FB_ATMEL
@@ -21,7 +22,8 @@ config SOC_SAMA5D2
21 Select this if ou are using one of Atmel's SAMA5D2 family SoC. 22 Select this if ou are using one of Atmel's SAMA5D2 family SoC.
22 23
23config SOC_SAMA5D3 24config SOC_SAMA5D3
24 bool "SAMA5D3 family" if ARCH_MULTI_V7 25 bool "SAMA5D3 family"
26 depends on ARCH_MULTI_V7
25 select SOC_SAMA5 27 select SOC_SAMA5
26 select HAVE_FB_ATMEL 28 select HAVE_FB_ATMEL
27 select HAVE_AT91_UTMI 29 select HAVE_AT91_UTMI
@@ -33,7 +35,8 @@ config SOC_SAMA5D3
33 This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36. 35 This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
34 36
35config SOC_SAMA5D4 37config SOC_SAMA5D4
36 bool "SAMA5D4 family" if ARCH_MULTI_V7 38 bool "SAMA5D4 family"
39 depends on ARCH_MULTI_V7
37 select SOC_SAMA5 40 select SOC_SAMA5
38 select CACHE_L2X0 41 select CACHE_L2X0
39 select HAVE_FB_ATMEL 42 select HAVE_FB_ATMEL
@@ -46,7 +49,8 @@ config SOC_SAMA5D4
46 Select this if you are using one of Atmel's SAMA5D4 family SoC. 49 Select this if you are using one of Atmel's SAMA5D4 family SoC.
47 50
48config SOC_AT91RM9200 51config SOC_AT91RM9200
49 bool "AT91RM9200" if ARCH_MULTI_V4T 52 bool "AT91RM9200"
53 depends on ARCH_MULTI_V4T
50 select ATMEL_AIC_IRQ 54 select ATMEL_AIC_IRQ
51 select ATMEL_ST 55 select ATMEL_ST
52 select CPU_ARM920T 56 select CPU_ARM920T
@@ -59,7 +63,8 @@ config SOC_AT91RM9200
59 Select this if you are using Atmel's AT91RM9200 SoC. 63 Select this if you are using Atmel's AT91RM9200 SoC.
60 64
61config SOC_AT91SAM9 65config SOC_AT91SAM9
62 bool "AT91SAM9" if ARCH_MULTI_V5 66 bool "AT91SAM9"
67 depends on ARCH_MULTI_V5
63 select ATMEL_AIC_IRQ 68 select ATMEL_AIC_IRQ
64 select ATMEL_SDRAMC 69 select ATMEL_SDRAMC
65 select CPU_ARM926T 70 select CPU_ARM926T
diff --git a/arch/arm/mach-axxia/Kconfig b/arch/arm/mach-axxia/Kconfig
index 8be7e0ae1922..6c6d5e76565b 100644
--- a/arch/arm/mach-axxia/Kconfig
+++ b/arch/arm/mach-axxia/Kconfig
@@ -1,5 +1,6 @@
1config ARCH_AXXIA 1config ARCH_AXXIA
2 bool "LSI Axxia platforms" if (ARCH_MULTI_V7 && ARM_LPAE) 2 bool "LSI Axxia platforms"
3 depends on ARCH_MULTI_V7 && ARM_LPAE
3 select ARCH_DMA_ADDR_T_64BIT 4 select ARCH_DMA_ADDR_T_64BIT
4 select ARM_AMBA 5 select ARM_AMBA
5 select ARM_GIC 6 select ARM_GIC
diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
index 959d4df3d2b6..ffbd71d45008 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)
82 } 82 }
83} 83}
84 84
85static struct smp_operations axxia_smp_ops __initdata = { 85static const struct smp_operations axxia_smp_ops __initconst = {
86 .smp_prepare_cpus = axxia_smp_prepare_cpus, 86 .smp_prepare_cpus = axxia_smp_prepare_cpus,
87 .smp_boot_secondary = axxia_boot_secondary, 87 .smp_boot_secondary = axxia_boot_secondary,
88}; 88};
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index 8c53c55be1fe..77116dcac01a 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_BCM 1menuconfig ARCH_BCM
2 bool "Broadcom SoC Support" if ARCH_MULTI_V6_V7 2 bool "Broadcom SoC Support"
3 depends on ARCH_MULTI_V6_V7
3 help 4 help
4 This enables support for Broadcom ARM based SoC chips 5 This enables support for Broadcom ARM based SoC chips
5 6
@@ -27,7 +28,8 @@ config ARCH_BCM_IPROC
27 Currently supported SoCs are Cygnus. 28 Currently supported SoCs are Cygnus.
28 29
29config ARCH_BCM_CYGNUS 30config ARCH_BCM_CYGNUS
30 bool "Broadcom Cygnus Support" if ARCH_MULTI_V7 31 bool "Broadcom Cygnus Support"
32 depends on ARCH_MULTI_V7
31 select ARCH_BCM_IPROC 33 select ARCH_BCM_IPROC
32 help 34 help
33 Enable support for the Cygnus family, 35 Enable support for the Cygnus family,
@@ -36,7 +38,8 @@ config ARCH_BCM_CYGNUS
36 BCM58300, BCM58302, BCM58303, BCM58305. 38 BCM58300, BCM58302, BCM58303, BCM58305.
37 39
38config ARCH_BCM_NSP 40config ARCH_BCM_NSP
39 bool "Broadcom Northstar Plus SoC Support" if ARCH_MULTI_V7 41 bool "Broadcom Northstar Plus SoC Support"
42 depends on ARCH_MULTI_V7
40 select ARCH_BCM_IPROC 43 select ARCH_BCM_IPROC
41 select ARM_ERRATA_754322 44 select ARM_ERRATA_754322
42 select ARM_ERRATA_775420 45 select ARM_ERRATA_775420
@@ -50,7 +53,8 @@ config ARCH_BCM_NSP
50 NAND flash, SATA and several other IO controllers. 53 NAND flash, SATA and several other IO controllers.
51 54
52config ARCH_BCM_5301X 55config ARCH_BCM_5301X
53 bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7 56 bool "Broadcom BCM470X / BCM5301X ARM SoC"
57 depends on ARCH_MULTI_V7
54 select ARCH_BCM_IPROC 58 select ARCH_BCM_IPROC
55 help 59 help
56 Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores. 60 Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
@@ -82,7 +86,8 @@ config ARCH_BCM_MOBILE
82 This enables support for systems based on Broadcom mobile SoCs. 86 This enables support for systems based on Broadcom mobile SoCs.
83 87
84config ARCH_BCM_281XX 88config ARCH_BCM_281XX
85 bool "Broadcom BCM281XX SoC family" if ARCH_MULTI_V7 89 bool "Broadcom BCM281XX SoC family"
90 depends on ARCH_MULTI_V7
86 select ARCH_BCM_MOBILE 91 select ARCH_BCM_MOBILE
87 select HAVE_SMP 92 select HAVE_SMP
88 help 93 help
@@ -91,7 +96,8 @@ config ARCH_BCM_281XX
91 variants. 96 variants.
92 97
93config ARCH_BCM_21664 98config ARCH_BCM_21664
94 bool "Broadcom BCM21664 SoC family" if ARCH_MULTI_V7 99 bool "Broadcom BCM21664 SoC family"
100 depends on ARCH_MULTI_V7
95 select ARCH_BCM_MOBILE 101 select ARCH_BCM_MOBILE
96 select HAVE_SMP 102 select HAVE_SMP
97 help 103 help
@@ -122,7 +128,8 @@ config ARCH_BCM_MOBILE_SMP
122comment "Other Architectures" 128comment "Other Architectures"
123 129
124config ARCH_BCM2835 130config ARCH_BCM2835
125 bool "Broadcom BCM2835 family" if ARCH_MULTI_V6 131 bool "Broadcom BCM2835 family"
132 depends on ARCH_MULTI_V6
126 select ARCH_REQUIRE_GPIOLIB 133 select ARCH_REQUIRE_GPIOLIB
127 select ARM_AMBA 134 select ARM_AMBA
128 select ARM_ERRATA_411920 135 select ARM_ERRATA_411920
@@ -135,7 +142,8 @@ config ARCH_BCM2835
135 used in the Raspberry Pi and Roku 2 devices. 142 used in the Raspberry Pi and Roku 2 devices.
136 143
137config ARCH_BCM_63XX 144config ARCH_BCM_63XX
138 bool "Broadcom BCM63xx DSL SoC" if ARCH_MULTI_V7 145 bool "Broadcom BCM63xx DSL SoC"
146 depends on ARCH_MULTI_V7
139 depends on MMU 147 depends on MMU
140 select ARM_ERRATA_754322 148 select ARM_ERRATA_754322
141 select ARM_ERRATA_764369 if SMP 149 select ARM_ERRATA_764369 if SMP
@@ -152,7 +160,8 @@ config ARCH_BCM_63XX
152 the BCM63138 variant. 160 the BCM63138 variant.
153 161
154config ARCH_BRCMSTB 162config ARCH_BRCMSTB
155 bool "Broadcom BCM7XXX based boards" if ARCH_MULTI_V7 163 bool "Broadcom BCM7XXX based boards"
164 depends on ARCH_MULTI_V7
156 select ARM_GIC 165 select ARM_GIC
157 select ARM_ERRATA_798181 if SMP 166 select ARM_ERRATA_798181 if SMP
158 select HAVE_ARM_ARCH_TIMER 167 select HAVE_ARM_ARCH_TIMER
diff --git a/arch/arm/mach-bcm/bcm63xx_smp.c b/arch/arm/mach-bcm/bcm63xx_smp.c
index 19be90421f4d..9b6727ed68cd 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)
161 } 161 }
162} 162}
163 163
164struct smp_operations bcm63138_smp_ops __initdata = { 164static const struct smp_operations bcm63138_smp_ops __initconst = {
165 .smp_prepare_cpus = bcm63138_smp_prepare_cpus, 165 .smp_prepare_cpus = bcm63138_smp_prepare_cpus,
166 .smp_boot_secondary = bcm63138_smp_boot_secondary, 166 .smp_boot_secondary = bcm63138_smp_boot_secondary,
167}; 167};
diff --git a/arch/arm/mach-bcm/kona_smp.c b/arch/arm/mach-bcm/kona_smp.c
index 66a0465528a5..da8328b97b7d 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)
194 return -ENOSYS; 194 return -ENOSYS;
195} 195}
196 196
197static struct smp_operations bcm_smp_ops __initdata = { 197static const struct smp_operations bcm_smp_ops __initconst = {
198 .smp_prepare_cpus = bcm_smp_prepare_cpus, 198 .smp_prepare_cpus = bcm_smp_prepare_cpus,
199 .smp_boot_secondary = bcm_boot_secondary, 199 .smp_boot_secondary = bcm_boot_secondary,
200}; 200};
diff --git a/arch/arm/mach-bcm/platsmp-brcmstb.c b/arch/arm/mach-bcm/platsmp-brcmstb.c
index 44d6bddf7a4e..40dc8448445e 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)
356 return 0; 356 return 0;
357} 357}
358 358
359static struct smp_operations brcmstb_smp_ops __initdata = { 359static const struct smp_operations brcmstb_smp_ops __initconst = {
360 .smp_prepare_cpus = brcmstb_cpu_ctrl_setup, 360 .smp_prepare_cpus = brcmstb_cpu_ctrl_setup,
361 .smp_boot_secondary = brcmstb_boot_secondary, 361 .smp_boot_secondary = brcmstb_boot_secondary,
362#ifdef CONFIG_HOTPLUG_CPU 362#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-berlin/Kconfig b/arch/arm/mach-berlin/Kconfig
index 742d53a5f7f9..ffbfa0bd091b 100644
--- a/arch/arm/mach-berlin/Kconfig
+++ b/arch/arm/mach-berlin/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_BERLIN 1menuconfig ARCH_BERLIN
2 bool "Marvell Berlin SoCs" if ARCH_MULTI_V7 2 bool "Marvell Berlin SoCs"
3 depends on ARCH_MULTI_V7
3 select ARCH_HAS_RESET_CONTROLLER 4 select ARCH_HAS_RESET_CONTROLLER
4 select ARCH_REQUIRE_GPIOLIB 5 select ARCH_REQUIRE_GPIOLIB
5 select ARM_GIC 6 select ARM_GIC
diff --git a/arch/arm/mach-berlin/platsmp.c b/arch/arm/mach-berlin/platsmp.c
index 405cd37e4fba..93f90688db18 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)
119} 119}
120#endif 120#endif
121 121
122static struct smp_operations berlin_smp_ops __initdata = { 122static const struct smp_operations berlin_smp_ops __initconst = {
123 .smp_prepare_cpus = berlin_smp_prepare_cpus, 123 .smp_prepare_cpus = berlin_smp_prepare_cpus,
124 .smp_boot_secondary = berlin_boot_secondary, 124 .smp_boot_secondary = berlin_boot_secondary,
125#ifdef CONFIG_HOTPLUG_CPU 125#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-cns3xxx/Kconfig b/arch/arm/mach-cns3xxx/Kconfig
index 3c22a1990ecd..eb14a0ff0093 100644
--- a/arch/arm/mach-cns3xxx/Kconfig
+++ b/arch/arm/mach-cns3xxx/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_CNS3XXX 1menuconfig ARCH_CNS3XXX
2 bool "Cavium Networks CNS3XXX family" if ARCH_MULTI_V6 2 bool "Cavium Networks CNS3XXX family"
3 depends on ARCH_MULTI_V6
3 select ARM_GIC 4 select ARM_GIC
4 select PCI_DOMAINS if PCI 5 select PCI_DOMAINS if PCI
5 help 6 help
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 3a10f1a8317a..49e8dcf37206 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -8,7 +8,8 @@
8# Configuration options for the EXYNOS4 8# Configuration options for the EXYNOS4
9 9
10menuconfig ARCH_EXYNOS 10menuconfig ARCH_EXYNOS
11 bool "Samsung EXYNOS" if ARCH_MULTI_V7 11 bool "Samsung EXYNOS"
12 depends on ARCH_MULTI_V7
12 select ARCH_HAS_BANDGAP 13 select ARCH_HAS_BANDGAP
13 select ARCH_HAS_HOLES_MEMORYMODEL 14 select ARCH_HAS_HOLES_MEMORYMODEL
14 select ARCH_REQUIRE_GPIOLIB 15 select ARCH_REQUIRE_GPIOLIB
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 153492513c40..e349a038976d 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) {}
149extern void exynos_cpu_resume(void); 149extern void exynos_cpu_resume(void);
150extern void exynos_cpu_resume_ns(void); 150extern void exynos_cpu_resume_ns(void);
151 151
152extern struct smp_operations exynos_smp_ops; 152extern const struct smp_operations exynos_smp_ops;
153 153
154extern void exynos_cpu_power_down(int cpu); 154extern void exynos_cpu_power_down(int cpu);
155extern void exynos_cpu_power_up(int cpu); 155extern void exynos_cpu_power_up(int cpu);
diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
index 98a2c0cbb833..5bd9559786ba 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)
479} 479}
480#endif /* CONFIG_HOTPLUG_CPU */ 480#endif /* CONFIG_HOTPLUG_CPU */
481 481
482struct smp_operations exynos_smp_ops __initdata = { 482const struct smp_operations exynos_smp_ops __initconst = {
483 .smp_init_cpus = exynos_smp_init_cpus, 483 .smp_init_cpus = exynos_smp_init_cpus,
484 .smp_prepare_cpus = exynos_smp_prepare_cpus, 484 .smp_prepare_cpus = exynos_smp_prepare_cpus,
485 .smp_secondary_init = exynos_secondary_init, 485 .smp_secondary_init = exynos_secondary_init,
diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig
index 31aa866c3317..81110ec34226 100644
--- a/arch/arm/mach-highbank/Kconfig
+++ b/arch/arm/mach-highbank/Kconfig
@@ -1,5 +1,6 @@
1config ARCH_HIGHBANK 1config ARCH_HIGHBANK
2 bool "Calxeda ECX-1000/2000 (Highbank/Midway)" if ARCH_MULTI_V7 2 bool "Calxeda ECX-1000/2000 (Highbank/Midway)"
3 depends on ARCH_MULTI_V7
3 select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE 4 select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
4 select ARCH_HAS_HOLES_MEMORYMODEL 5 select ARCH_HAS_HOLES_MEMORYMODEL
5 select ARCH_SUPPORTS_BIG_ENDIAN 6 select ARCH_SUPPORTS_BIG_ENDIAN
diff --git a/arch/arm/mach-hisi/Kconfig b/arch/arm/mach-hisi/Kconfig
index 83061ad0e282..a3b091a4d344 100644
--- a/arch/arm/mach-hisi/Kconfig
+++ b/arch/arm/mach-hisi/Kconfig
@@ -13,7 +13,8 @@ if ARCH_HISI
13menu "Hisilicon platform type" 13menu "Hisilicon platform type"
14 14
15config ARCH_HI3xxx 15config ARCH_HI3xxx
16 bool "Hisilicon Hi36xx family" if ARCH_MULTI_V7 16 bool "Hisilicon Hi36xx family"
17 depends on ARCH_MULTI_V7
17 select CACHE_L2X0 18 select CACHE_L2X0
18 select HAVE_ARM_SCU if SMP 19 select HAVE_ARM_SCU if SMP
19 select HAVE_ARM_TWD if SMP 20 select HAVE_ARM_TWD if SMP
@@ -23,7 +24,8 @@ config ARCH_HI3xxx
23 Support for Hisilicon Hi36xx SoC family 24 Support for Hisilicon Hi36xx SoC family
24 25
25config ARCH_HIP01 26config ARCH_HIP01
26 bool "Hisilicon HIP01 family" if ARCH_MULTI_V7 27 bool "Hisilicon HIP01 family"
28 depends on ARCH_MULTI_V7
27 select HAVE_ARM_SCU if SMP 29 select HAVE_ARM_SCU if SMP
28 select HAVE_ARM_TWD if SMP 30 select HAVE_ARM_TWD if SMP
29 select ARM_GLOBAL_TIMER 31 select ARM_GLOBAL_TIMER
@@ -31,7 +33,8 @@ config ARCH_HIP01
31 Support for Hisilicon HIP01 SoC family 33 Support for Hisilicon HIP01 SoC family
32 34
33config ARCH_HIP04 35config ARCH_HIP04
34 bool "Hisilicon HiP04 Cortex A15 family" if ARCH_MULTI_V7 36 bool "Hisilicon HiP04 Cortex A15 family"
37 depends on ARCH_MULTI_V7
35 select ARM_ERRATA_798181 if SMP 38 select ARM_ERRATA_798181 if SMP
36 select HAVE_ARM_ARCH_TIMER 39 select HAVE_ARM_ARCH_TIMER
37 select MCPM if SMP 40 select MCPM if SMP
@@ -40,7 +43,8 @@ config ARCH_HIP04
40 Support for Hisilicon HiP04 SoC family 43 Support for Hisilicon HiP04 SoC family
41 44
42config ARCH_HIX5HD2 45config ARCH_HIX5HD2
43 bool "Hisilicon X5HD2 family" if ARCH_MULTI_V7 46 bool "Hisilicon X5HD2 family"
47 depends on ARCH_MULTI_V7
44 select CACHE_L2X0 48 select CACHE_L2X0
45 select HAVE_ARM_SCU if SMP 49 select HAVE_ARM_SCU if SMP
46 select HAVE_ARM_TWD if SMP 50 select HAVE_ARM_TWD if SMP
diff --git a/arch/arm/mach-hisi/core.h b/arch/arm/mach-hisi/core.h
index c7648ef1825c..e883583a23f1 100644
--- a/arch/arm/mach-hisi/core.h
+++ b/arch/arm/mach-hisi/core.h
@@ -6,17 +6,14 @@
6extern void hi3xxx_set_cpu_jump(int cpu, void *jump_addr); 6extern void hi3xxx_set_cpu_jump(int cpu, void *jump_addr);
7extern int hi3xxx_get_cpu_jump(int cpu); 7extern int hi3xxx_get_cpu_jump(int cpu);
8extern void secondary_startup(void); 8extern void secondary_startup(void);
9extern struct smp_operations hi3xxx_smp_ops;
10 9
11extern void hi3xxx_cpu_die(unsigned int cpu); 10extern void hi3xxx_cpu_die(unsigned int cpu);
12extern int hi3xxx_cpu_kill(unsigned int cpu); 11extern int hi3xxx_cpu_kill(unsigned int cpu);
13extern void hi3xxx_set_cpu(int cpu, bool enable); 12extern void hi3xxx_set_cpu(int cpu, bool enable);
14 13
15extern struct smp_operations hix5hd2_smp_ops;
16extern void hix5hd2_set_cpu(int cpu, bool enable); 14extern void hix5hd2_set_cpu(int cpu, bool enable);
17extern void hix5hd2_cpu_die(unsigned int cpu); 15extern void hix5hd2_cpu_die(unsigned int cpu);
18 16
19extern struct smp_operations hip01_smp_ops;
20extern void hip01_set_cpu(int cpu, bool enable); 17extern void hip01_set_cpu(int cpu, bool enable);
21extern void hip01_cpu_die(unsigned int cpu); 18extern void hip01_cpu_die(unsigned int cpu);
22#endif 19#endif
diff --git a/arch/arm/mach-hisi/platmcpm.c b/arch/arm/mach-hisi/platmcpm.c
index b5f8f5ffda79..4b653a8cb75c 100644
--- a/arch/arm/mach-hisi/platmcpm.c
+++ b/arch/arm/mach-hisi/platmcpm.c
@@ -239,7 +239,7 @@ err:
239} 239}
240#endif 240#endif
241 241
242static struct smp_operations __initdata hip04_smp_ops = { 242static const struct smp_operations hip04_smp_ops __initconst = {
243 .smp_boot_secondary = hip04_boot_secondary, 243 .smp_boot_secondary = hip04_boot_secondary,
244#ifdef CONFIG_HOTPLUG_CPU 244#ifdef CONFIG_HOTPLUG_CPU
245 .cpu_die = hip04_cpu_die, 245 .cpu_die = hip04_cpu_die,
diff --git a/arch/arm/mach-hisi/platsmp.c b/arch/arm/mach-hisi/platsmp.c
index 51744127db66..47ed32cf57cc 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)
89 return 0; 89 return 0;
90} 90}
91 91
92struct smp_operations hi3xxx_smp_ops __initdata = { 92static const struct smp_operations hi3xxx_smp_ops __initconst = {
93 .smp_prepare_cpus = hi3xxx_smp_prepare_cpus, 93 .smp_prepare_cpus = hi3xxx_smp_prepare_cpus,
94 .smp_boot_secondary = hi3xxx_boot_secondary, 94 .smp_boot_secondary = hi3xxx_boot_secondary,
95#ifdef CONFIG_HOTPLUG_CPU 95#ifdef CONFIG_HOTPLUG_CPU
@@ -126,7 +126,7 @@ static int hix5hd2_boot_secondary(unsigned int cpu, struct task_struct *idle)
126} 126}
127 127
128 128
129struct smp_operations hix5hd2_smp_ops __initdata = { 129static const struct smp_operations hix5hd2_smp_ops __initconst = {
130 .smp_prepare_cpus = hisi_common_smp_prepare_cpus, 130 .smp_prepare_cpus = hisi_common_smp_prepare_cpus,
131 .smp_boot_secondary = hix5hd2_boot_secondary, 131 .smp_boot_secondary = hix5hd2_boot_secondary,
132#ifdef CONFIG_HOTPLUG_CPU 132#ifdef CONFIG_HOTPLUG_CPU
@@ -176,7 +176,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
176 return 0; 176 return 0;
177} 177}
178 178
179struct smp_operations hip01_smp_ops __initdata = { 179static const struct smp_operations hip01_smp_ops __initconst = {
180 .smp_prepare_cpus = hisi_common_smp_prepare_cpus, 180 .smp_prepare_cpus = hisi_common_smp_prepare_cpus,
181 .smp_boot_secondary = hip01_boot_secondary, 181 .smp_boot_secondary = hip01_boot_secondary,
182}; 182};
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 8ceda2844c4f..0ac180f7b330 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_MXC 1menuconfig ARCH_MXC
2 bool "Freescale i.MX family" if ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M 2 bool "Freescale i.MX family"
3 depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M
3 select ARCH_REQUIRE_GPIOLIB 4 select ARCH_REQUIRE_GPIOLIB
4 select ARM_CPU_SUSPEND if PM 5 select ARM_CPU_SUSPEND if PM
5 select CLKSRC_IMX_GPT 6 select CLKSRC_IMX_GPT
@@ -596,7 +597,8 @@ choice
596 default VF_USE_ARM_GLOBAL_TIMER 597 default VF_USE_ARM_GLOBAL_TIMER
597 598
598 config VF_USE_ARM_GLOBAL_TIMER 599 config VF_USE_ARM_GLOBAL_TIMER
599 bool "Use ARM Global Timer" if ARCH_MULTI_V7 600 bool "Use ARM Global Timer"
601 depends on ARCH_MULTI_V7
600 select ARM_GLOBAL_TIMER 602 select ARM_GLOBAL_TIMER
601 select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK 603 select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
602 help 604 help
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index e2d53839fceb..32b83f09da18 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -153,7 +153,7 @@ void imx_init_l2cache(void);
153static inline void imx_init_l2cache(void) {} 153static inline void imx_init_l2cache(void) {}
154#endif 154#endif
155 155
156extern struct smp_operations imx_smp_ops; 156extern const struct smp_operations imx_smp_ops;
157extern struct smp_operations ls1021a_smp_ops; 157extern const struct smp_operations ls1021a_smp_ops;
158 158
159#endif 159#endif
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c
index 7f270015fe58..711dbbd5badd 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)
88 sync_cache_w(&g_diag_reg); 88 sync_cache_w(&g_diag_reg);
89} 89}
90 90
91struct smp_operations imx_smp_ops __initdata = { 91const struct smp_operations imx_smp_ops __initconst = {
92 .smp_init_cpus = imx_smp_init_cpus, 92 .smp_init_cpus = imx_smp_init_cpus,
93 .smp_prepare_cpus = imx_smp_prepare_cpus, 93 .smp_prepare_cpus = imx_smp_prepare_cpus,
94 .smp_boot_secondary = imx_boot_secondary, 94 .smp_boot_secondary = imx_boot_secondary,
@@ -123,7 +123,7 @@ static void __init ls1021a_smp_prepare_cpus(unsigned int max_cpus)
123 iounmap(dcfg_base); 123 iounmap(dcfg_base);
124} 124}
125 125
126struct smp_operations ls1021a_smp_ops __initdata = { 126const struct smp_operations ls1021a_smp_ops __initconst = {
127 .smp_prepare_cpus = ls1021a_smp_prepare_cpus, 127 .smp_prepare_cpus = ls1021a_smp_prepare_cpus,
128 .smp_boot_secondary = ls1021a_boot_secondary, 128 .smp_boot_secondary = ls1021a_boot_secondary,
129}; 129};
diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig
index e936cf420b48..b01bdc9baf89 100644
--- a/arch/arm/mach-integrator/Kconfig
+++ b/arch/arm/mach-integrator/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_INTEGRATOR 1menuconfig ARCH_INTEGRATOR
2 bool "ARM Ltd. Integrator family" if (ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6) 2 bool "ARM Ltd. Integrator family"
3 depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6
3 select ARM_AMBA 4 select ARM_AMBA
4 select ARM_PATCH_PHYS_VIRT if MMU 5 select ARM_PATCH_PHYS_VIRT if MMU
5 select AUTO_ZRELADDR 6 select AUTO_ZRELADDR
diff --git a/arch/arm/mach-keystone/keystone.h b/arch/arm/mach-keystone/keystone.h
index cd04a1c14de8..33eaa037af5a 100644
--- a/arch/arm/mach-keystone/keystone.h
+++ b/arch/arm/mach-keystone/keystone.h
@@ -15,7 +15,7 @@
15 15
16#ifndef __ASSEMBLER__ 16#ifndef __ASSEMBLER__
17 17
18extern struct smp_operations keystone_smp_ops; 18extern const struct smp_operations keystone_smp_ops;
19extern void secondary_startup(void); 19extern void secondary_startup(void);
20extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr); 20extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr);
21extern int keystone_pm_runtime_init(void); 21extern int keystone_pm_runtime_init(void);
diff --git a/arch/arm/mach-keystone/platsmp.c b/arch/arm/mach-keystone/platsmp.c
index 4bbb18463bfd..5665276972ec 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,
39 return error; 39 return error;
40} 40}
41 41
42struct smp_operations keystone_smp_ops __initdata = { 42const struct smp_operations keystone_smp_ops __initconst = {
43 .smp_boot_secondary = keystone_smp_boot_secondary, 43 .smp_boot_secondary = keystone_smp_boot_secondary,
44}; 44};
diff --git a/arch/arm/mach-mediatek/Kconfig b/arch/arm/mach-mediatek/Kconfig
index aeece17e5cea..0abcc51afff5 100644
--- a/arch/arm/mach-mediatek/Kconfig
+++ b/arch/arm/mach-mediatek/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_MEDIATEK 1menuconfig ARCH_MEDIATEK
2 bool "Mediatek MT65xx & MT81xx SoC" if ARCH_MULTI_V7 2 bool "Mediatek MT65xx & MT81xx SoC"
3 depends on ARCH_MULTI_V7
3 select ARM_GIC 4 select ARM_GIC
4 select PINCTRL 5 select PINCTRL
5 select MTK_TIMER 6 select MTK_TIMER
diff --git a/arch/arm/mach-mediatek/platsmp.c b/arch/arm/mach-mediatek/platsmp.c
index 8141f3f8afed..a1b07eeaaf5b 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)
128 __mtk_smp_prepare_cpus(max_cpus, 0); 128 __mtk_smp_prepare_cpus(max_cpus, 0);
129} 129}
130 130
131static struct smp_operations mt81xx_tz_smp_ops __initdata = { 131static const struct smp_operations mt81xx_tz_smp_ops __initconst = {
132 .smp_prepare_cpus = mtk_tz_smp_prepare_cpus, 132 .smp_prepare_cpus = mtk_tz_smp_prepare_cpus,
133 .smp_boot_secondary = mtk_boot_secondary, 133 .smp_boot_secondary = mtk_boot_secondary,
134}; 134};
135CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops); 135CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops);
136 136
137static struct smp_operations mt6589_smp_ops __initdata = { 137static const struct smp_operations mt6589_smp_ops __initconst = {
138 .smp_prepare_cpus = mtk_smp_prepare_cpus, 138 .smp_prepare_cpus = mtk_smp_prepare_cpus,
139 .smp_boot_secondary = mtk_boot_secondary, 139 .smp_boot_secondary = mtk_boot_secondary,
140}; 140};
diff --git a/arch/arm/mach-meson/Kconfig b/arch/arm/mach-meson/Kconfig
index 5d56f86ae1a4..31bdd91098b6 100644
--- a/arch/arm/mach-meson/Kconfig
+++ b/arch/arm/mach-meson/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_MESON 1menuconfig ARCH_MESON
2 bool "Amlogic Meson SoCs" if ARCH_MULTI_V7 2 bool "Amlogic Meson SoCs"
3 depends on ARCH_MULTI_V7
3 select ARCH_REQUIRE_GPIOLIB 4 select ARCH_REQUIRE_GPIOLIB
4 select GENERIC_IRQ_CHIP 5 select GENERIC_IRQ_CHIP
5 select ARM_GIC 6 select ARM_GIC
diff --git a/arch/arm/mach-moxart/Kconfig b/arch/arm/mach-moxart/Kconfig
index f49328c39bef..180d9d216719 100644
--- a/arch/arm/mach-moxart/Kconfig
+++ b/arch/arm/mach-moxart/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_MOXART 1menuconfig ARCH_MOXART
2 bool "MOXA ART SoC" if ARCH_MULTI_V4 2 bool "MOXA ART SoC"
3 depends on ARCH_MULTI_V4
3 select CPU_FA526 4 select CPU_FA526
4 select ARM_DMA_MEM_BUFFERABLE 5 select ARM_DMA_MEM_BUFFERABLE
5 select CLKSRC_MMIO 6 select CLKSRC_MMIO
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index e20fc4178b15..64e3d2ce9a07 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_MVEBU 1menuconfig ARCH_MVEBU
2 bool "Marvell Engineering Business Unit (MVEBU) SoCs" if (ARCH_MULTI_V7 || ARCH_MULTI_V5) 2 bool "Marvell Engineering Business Unit (MVEBU) SoCs"
3 depends on ARCH_MULTI_V7 || ARCH_MULTI_V5
3 select ARCH_SUPPORTS_BIG_ENDIAN 4 select ARCH_SUPPORTS_BIG_ENDIAN
4 select CLKSRC_MMIO 5 select CLKSRC_MMIO
5 select GENERIC_IRQ_CHIP 6 select GENERIC_IRQ_CHIP
@@ -25,7 +26,8 @@ config MACH_MVEBU_V7
25 select MACH_MVEBU_ANY 26 select MACH_MVEBU_ANY
26 27
27config MACH_ARMADA_370 28config MACH_ARMADA_370
28 bool "Marvell Armada 370 boards" if ARCH_MULTI_V7 29 bool "Marvell Armada 370 boards"
30 depends on ARCH_MULTI_V7
29 select ARMADA_370_CLK 31 select ARMADA_370_CLK
30 select CPU_PJ4B 32 select CPU_PJ4B
31 select MACH_MVEBU_V7 33 select MACH_MVEBU_V7
@@ -35,7 +37,8 @@ config MACH_ARMADA_370
35 on the Marvell Armada 370 SoC with device tree. 37 on the Marvell Armada 370 SoC with device tree.
36 38
37config MACH_ARMADA_375 39config MACH_ARMADA_375
38 bool "Marvell Armada 375 boards" if ARCH_MULTI_V7 40 bool "Marvell Armada 375 boards"
41 depends on ARCH_MULTI_V7
39 select ARM_ERRATA_720789 42 select ARM_ERRATA_720789
40 select ARM_ERRATA_753970 43 select ARM_ERRATA_753970
41 select ARM_GIC 44 select ARM_GIC
@@ -50,7 +53,8 @@ config MACH_ARMADA_375
50 on the Marvell Armada 375 SoC with device tree. 53 on the Marvell Armada 375 SoC with device tree.
51 54
52config MACH_ARMADA_38X 55config MACH_ARMADA_38X
53 bool "Marvell Armada 380/385 boards" if ARCH_MULTI_V7 56 bool "Marvell Armada 380/385 boards"
57 depends on ARCH_MULTI_V7
54 select ARM_ERRATA_720789 58 select ARM_ERRATA_720789
55 select ARM_ERRATA_753970 59 select ARM_ERRATA_753970
56 select ARM_GIC 60 select ARM_GIC
@@ -65,7 +69,8 @@ config MACH_ARMADA_38X
65 on the Marvell Armada 380/385 SoC with device tree. 69 on the Marvell Armada 380/385 SoC with device tree.
66 70
67config MACH_ARMADA_39X 71config MACH_ARMADA_39X
68 bool "Marvell Armada 39x boards" if ARCH_MULTI_V7 72 bool "Marvell Armada 39x boards"
73 depends on ARCH_MULTI_V7
69 select ARM_GIC 74 select ARM_GIC
70 select ARMADA_39X_CLK 75 select ARMADA_39X_CLK
71 select CACHE_L2X0 76 select CACHE_L2X0
@@ -79,7 +84,8 @@ config MACH_ARMADA_39X
79 on the Marvell Armada 39x SoC with device tree. 84 on the Marvell Armada 39x SoC with device tree.
80 85
81config MACH_ARMADA_XP 86config MACH_ARMADA_XP
82 bool "Marvell Armada XP boards" if ARCH_MULTI_V7 87 bool "Marvell Armada XP boards"
88 depends on ARCH_MULTI_V7
83 select ARMADA_XP_CLK 89 select ARMADA_XP_CLK
84 select CPU_PJ4B 90 select CPU_PJ4B
85 select MACH_MVEBU_V7 91 select MACH_MVEBU_V7
@@ -89,7 +95,8 @@ config MACH_ARMADA_XP
89 on the Marvell Armada XP SoC with device tree. 95 on the Marvell Armada XP SoC with device tree.
90 96
91config MACH_DOVE 97config MACH_DOVE
92 bool "Marvell Dove boards" if ARCH_MULTI_V7 98 bool "Marvell Dove boards"
99 depends on ARCH_MULTI_V7
93 select CACHE_L2X0 100 select CACHE_L2X0
94 select CPU_PJ4 101 select CPU_PJ4
95 select DOVE_CLK 102 select DOVE_CLK
@@ -103,7 +110,8 @@ config MACH_DOVE
103 Marvell Dove using flattened device tree. 110 Marvell Dove using flattened device tree.
104 111
105config MACH_KIRKWOOD 112config MACH_KIRKWOOD
106 bool "Marvell Kirkwood boards" if ARCH_MULTI_V5 113 bool "Marvell Kirkwood boards"
114 depends on ARCH_MULTI_V5
107 select ARCH_REQUIRE_GPIOLIB 115 select ARCH_REQUIRE_GPIOLIB
108 select CPU_FEROCEON 116 select CPU_FEROCEON
109 select KIRKWOOD_CLK 117 select KIRKWOOD_CLK
diff --git a/arch/arm/mach-mvebu/armada-370-xp.h b/arch/arm/mach-mvebu/armada-370-xp.h
index c55bbf81de0e..09413b678409 100644
--- a/arch/arm/mach-mvebu/armada-370-xp.h
+++ b/arch/arm/mach-mvebu/armada-370-xp.h
@@ -17,7 +17,7 @@
17 17
18#ifdef CONFIG_SMP 18#ifdef CONFIG_SMP
19void armada_xp_secondary_startup(void); 19void armada_xp_secondary_startup(void);
20extern struct smp_operations armada_xp_smp_ops; 20extern const struct smp_operations armada_xp_smp_ops;
21#endif 21#endif
22 22
23#endif /* __MACH_ARMADA_370_XP_H */ 23#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 3d5000481c11..d715dec1c197 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)
93} 93}
94#endif 94#endif
95 95
96static struct smp_operations mvebu_cortex_a9_smp_ops __initdata = { 96static const struct smp_operations mvebu_cortex_a9_smp_ops __initconst = {
97 .smp_boot_secondary = mvebu_cortex_a9_boot_secondary, 97 .smp_boot_secondary = mvebu_cortex_a9_boot_secondary,
98}; 98};
99 99
100static struct smp_operations armada_38x_smp_ops __initdata = { 100static const struct smp_operations armada_38x_smp_ops __initconst = {
101 .smp_boot_secondary = mvebu_cortex_a9_boot_secondary, 101 .smp_boot_secondary = mvebu_cortex_a9_boot_secondary,
102 .smp_secondary_init = armada_38x_secondary_init, 102 .smp_secondary_init = armada_38x_secondary_init,
103#ifdef CONFIG_HOTPLUG_CPU 103#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-mvebu/platsmp.c b/arch/arm/mach-mvebu/platsmp.c
index 58cc8c1575eb..f9597b701028 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)
170} 170}
171#endif 171#endif
172 172
173struct smp_operations armada_xp_smp_ops __initdata = { 173const struct smp_operations armada_xp_smp_ops __initconst = {
174 .smp_init_cpus = armada_xp_smp_init_cpus, 174 .smp_init_cpus = armada_xp_smp_init_cpus,
175 .smp_prepare_cpus = armada_xp_smp_prepare_cpus, 175 .smp_prepare_cpus = armada_xp_smp_prepare_cpus,
176 .smp_boot_secondary = armada_xp_boot_secondary, 176 .smp_boot_secondary = armada_xp_boot_secondary,
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 0cba9575d2ca..f7666b9f3b21 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);
270 270
271extern void omap4_cpu_die(unsigned int cpu); 271extern void omap4_cpu_die(unsigned int cpu);
272 272
273extern struct smp_operations omap4_smp_ops; 273extern const struct smp_operations omap4_smp_ops;
274 274
275extern void omap5_secondary_startup(void); 275extern void omap5_secondary_startup(void);
276extern void omap5_secondary_hyp_startup(void); 276extern 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 79e1f876d1c9..c625cc10d9f9 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)
241 241
242} 242}
243 243
244struct smp_operations omap4_smp_ops __initdata = { 244const struct smp_operations omap4_smp_ops __initconst = {
245 .smp_init_cpus = omap4_smp_init_cpus, 245 .smp_init_cpus = omap4_smp_init_cpus,
246 .smp_prepare_cpus = omap4_smp_prepare_cpus, 246 .smp_prepare_cpus = omap4_smp_prepare_cpus,
247 .smp_secondary_init = omap4_secondary_init, 247 .smp_secondary_init = omap4_secondary_init,
diff --git a/arch/arm/mach-picoxcell/Kconfig b/arch/arm/mach-picoxcell/Kconfig
index 62240f69b4ee..aef92ba0eacd 100644
--- a/arch/arm/mach-picoxcell/Kconfig
+++ b/arch/arm/mach-picoxcell/Kconfig
@@ -1,5 +1,6 @@
1config ARCH_PICOXCELL 1config ARCH_PICOXCELL
2 bool "Picochip PicoXcell" if ARCH_MULTI_V6 2 bool "Picochip PicoXcell"
3 depends on ARCH_MULTI_V6
3 select ARCH_REQUIRE_GPIOLIB 4 select ARCH_REQUIRE_GPIOLIB
4 select ARM_VIC 5 select ARM_VIC
5 select DW_APB_TIMER_OF 6 select DW_APB_TIMER_OF
diff --git a/arch/arm/mach-prima2/Kconfig b/arch/arm/mach-prima2/Kconfig
index 9ab8932403e5..f998eb1c698e 100644
--- a/arch/arm/mach-prima2/Kconfig
+++ b/arch/arm/mach-prima2/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_SIRF 1menuconfig ARCH_SIRF
2 bool "CSR SiRF" if ARCH_MULTI_V7 2 bool "CSR SiRF"
3 depends on ARCH_MULTI_V7
3 select ARCH_HAS_RESET_CONTROLLER 4 select ARCH_HAS_RESET_CONTROLLER
4 select ARCH_REQUIRE_GPIOLIB 5 select ARCH_REQUIRE_GPIOLIB
5 select GENERIC_IRQ_CHIP 6 select GENERIC_IRQ_CHIP
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h
index 3916a6665100..6d77b622d168 100644
--- a/arch/arm/mach-prima2/common.h
+++ b/arch/arm/mach-prima2/common.h
@@ -15,7 +15,7 @@
15#include <asm/mach/time.h> 15#include <asm/mach/time.h>
16#include <asm/exception.h> 16#include <asm/exception.h>
17 17
18extern struct smp_operations sirfsoc_smp_ops; 18extern const struct smp_operations sirfsoc_smp_ops;
19extern void sirfsoc_secondary_startup(void); 19extern void sirfsoc_secondary_startup(void);
20extern void sirfsoc_cpu_die(unsigned int cpu); 20extern void sirfsoc_cpu_die(unsigned int cpu);
21 21
diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c
index e46c91094dde..0875b99add18 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)
112 return pen_release != -1 ? -ENOSYS : 0; 112 return pen_release != -1 ? -ENOSYS : 0;
113} 113}
114 114
115struct smp_operations sirfsoc_smp_ops __initdata = { 115const struct smp_operations sirfsoc_smp_ops __initconst = {
116 .smp_secondary_init = sirfsoc_secondary_init, 116 .smp_secondary_init = sirfsoc_secondary_init,
117 .smp_boot_secondary = sirfsoc_boot_secondary, 117 .smp_boot_secondary = sirfsoc_boot_secondary,
118#ifdef CONFIG_HOTPLUG_CPU 118#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-qcom/Kconfig b/arch/arm/mach-qcom/Kconfig
index 2256cd1e25d1..73494500b51c 100644
--- a/arch/arm/mach-qcom/Kconfig
+++ b/arch/arm/mach-qcom/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_QCOM 1menuconfig ARCH_QCOM
2 bool "Qualcomm Support" if ARCH_MULTI_V7 2 bool "Qualcomm Support"
3 depends on ARCH_MULTI_V7
3 select ARCH_SUPPORTS_BIG_ENDIAN 4 select ARCH_SUPPORTS_BIG_ENDIAN
4 select ARM_GIC 5 select ARM_GIC
5 select ARM_AMBA 6 select ARM_AMBA
diff --git a/arch/arm/mach-qcom/platsmp.c b/arch/arm/mach-qcom/platsmp.c
index 9b00123a315d..5494c9e0c909 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)
332 } 332 }
333} 333}
334 334
335static struct smp_operations smp_msm8660_ops __initdata = { 335static const struct smp_operations smp_msm8660_ops __initconst = {
336 .smp_prepare_cpus = qcom_smp_prepare_cpus, 336 .smp_prepare_cpus = qcom_smp_prepare_cpus,
337 .smp_secondary_init = qcom_secondary_init, 337 .smp_secondary_init = qcom_secondary_init,
338 .smp_boot_secondary = msm8660_boot_secondary, 338 .smp_boot_secondary = msm8660_boot_secondary,
@@ -342,7 +342,7 @@ static struct smp_operations smp_msm8660_ops __initdata = {
342}; 342};
343CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops); 343CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops);
344 344
345static struct smp_operations qcom_smp_kpssv1_ops __initdata = { 345static const struct smp_operations qcom_smp_kpssv1_ops __initconst = {
346 .smp_prepare_cpus = qcom_smp_prepare_cpus, 346 .smp_prepare_cpus = qcom_smp_prepare_cpus,
347 .smp_secondary_init = qcom_secondary_init, 347 .smp_secondary_init = qcom_secondary_init,
348 .smp_boot_secondary = kpssv1_boot_secondary, 348 .smp_boot_secondary = kpssv1_boot_secondary,
@@ -352,7 +352,7 @@ static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
352}; 352};
353CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops); 353CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops);
354 354
355static struct smp_operations qcom_smp_kpssv2_ops __initdata = { 355static const struct smp_operations qcom_smp_kpssv2_ops __initconst = {
356 .smp_prepare_cpus = qcom_smp_prepare_cpus, 356 .smp_prepare_cpus = qcom_smp_prepare_cpus,
357 .smp_secondary_init = qcom_secondary_init, 357 .smp_secondary_init = qcom_secondary_init,
358 .smp_boot_secondary = kpssv2_boot_secondary, 358 .smp_boot_secondary = kpssv2_boot_secondary,
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
index e1640b2f4350..05a995ea16d3 100644
--- a/arch/arm/mach-realview/core.h
+++ b/arch/arm/mach-realview/core.h
@@ -52,7 +52,7 @@ extern int realview_usb_register(struct resource *res);
52extern void realview_init_early(void); 52extern void realview_init_early(void);
53extern void realview_fixup(struct tag *tags, char **from); 53extern void realview_fixup(struct tag *tags, char **from);
54 54
55extern struct smp_operations realview_smp_ops; 55extern const struct smp_operations realview_smp_ops;
56extern void realview_cpu_die(unsigned int cpu); 56extern void realview_cpu_die(unsigned int cpu);
57 57
58#endif 58#endif
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index a2331b36ccce..e8ab69c7abfb 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)
75 __io_address(REALVIEW_SYS_FLAGSSET)); 75 __io_address(REALVIEW_SYS_FLAGSSET));
76} 76}
77 77
78struct smp_operations realview_smp_ops __initdata = { 78const struct smp_operations realview_smp_ops __initconst = {
79 .smp_init_cpus = realview_smp_init_cpus, 79 .smp_init_cpus = realview_smp_init_cpus,
80 .smp_prepare_cpus = realview_smp_prepare_cpus, 80 .smp_prepare_cpus = realview_smp_prepare_cpus,
81 .smp_secondary_init = versatile_secondary_init, 81 .smp_secondary_init = versatile_secondary_init,
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index ae4eb7cc4bcc..cef42fd886d1 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -1,5 +1,6 @@
1config ARCH_ROCKCHIP 1config ARCH_ROCKCHIP
2 bool "Rockchip RK2928 and RK3xxx SOCs" if ARCH_MULTI_V7 2 bool "Rockchip RK2928 and RK3xxx SOCs"
3 depends on ARCH_MULTI_V7
3 select PINCTRL 4 select PINCTRL
4 select PINCTRL_ROCKCHIP 5 select PINCTRL_ROCKCHIP
5 select ARCH_HAS_RESET_CONTROLLER 6 select ARCH_HAS_RESET_CONTROLLER
diff --git a/arch/arm/mach-rockchip/platsmp.c b/arch/arm/mach-rockchip/platsmp.c
index 3e7a4b761a95..938888fc55a1 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)
340} 340}
341#endif 341#endif
342 342
343static struct smp_operations rockchip_smp_ops __initdata = { 343static const struct smp_operations rockchip_smp_ops __initconst = {
344 .smp_prepare_cpus = rockchip_smp_prepare_cpus, 344 .smp_prepare_cpus = rockchip_smp_prepare_cpus,
345 .smp_boot_secondary = rockchip_boot_secondary, 345 .smp_boot_secondary = rockchip_boot_secondary,
346#ifdef CONFIG_HOTPLUG_CPU 346#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
index 330bfc8fcd52..13bc9820ff22 100644
--- a/arch/arm/mach-s5pv210/Kconfig
+++ b/arch/arm/mach-s5pv210/Kconfig
@@ -8,7 +8,8 @@
8# Configuration options for the S5PV210/S5PC110 8# Configuration options for the S5PV210/S5PC110
9 9
10config ARCH_S5PV210 10config ARCH_S5PV210
11 bool "Samsung S5PV210/S5PC110" if ARCH_MULTI_V7 11 bool "Samsung S5PV210/S5PC110"
12 depends on ARCH_MULTI_V7
12 select ARCH_HAS_HOLES_MEMORYMODEL 13 select ARCH_HAS_HOLES_MEMORYMODEL
13 select ARCH_REQUIRE_GPIOLIB 14 select ARCH_REQUIRE_GPIOLIB
14 select ARM_VIC 15 select ARM_VIC
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 88734a5e10ca..0f25f8fa2692 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -30,8 +30,8 @@ config ARCH_RMOBILE
30 select SYS_SUPPORTS_SH_TMU 30 select SYS_SUPPORTS_SH_TMU
31 31
32menuconfig ARCH_SHMOBILE_MULTI 32menuconfig ARCH_SHMOBILE_MULTI
33 bool "Renesas ARM SoCs" if ARCH_MULTI_V7 33 bool "Renesas ARM SoCs"
34 depends on MMU 34 depends on ARCH_MULTI_V7 && MMU
35 select ARCH_SHMOBILE 35 select ARCH_SHMOBILE
36 select HAVE_ARM_SCU if SMP 36 select HAVE_ARM_SCU if SMP
37 select HAVE_ARM_TWD if SMP 37 select HAVE_ARM_TWD if SMP
diff --git a/arch/arm/mach-shmobile/r8a7779.h b/arch/arm/mach-shmobile/r8a7779.h
index e1aaa2ef9376..2a5f7730a03c 100644
--- a/arch/arm/mach-shmobile/r8a7779.h
+++ b/arch/arm/mach-shmobile/r8a7779.h
@@ -3,6 +3,6 @@
3 3
4extern void r8a7779_pm_init(void); 4extern void r8a7779_pm_init(void);
5 5
6extern struct smp_operations r8a7779_smp_ops; 6extern const struct smp_operations r8a7779_smp_ops;
7 7
8#endif /* __ASM_R8A7779_H__ */ 8#endif /* __ASM_R8A7779_H__ */
diff --git a/arch/arm/mach-shmobile/r8a7790.h b/arch/arm/mach-shmobile/r8a7790.h
index 1a46d026052c..136f3455e9c7 100644
--- a/arch/arm/mach-shmobile/r8a7790.h
+++ b/arch/arm/mach-shmobile/r8a7790.h
@@ -1,6 +1,6 @@
1#ifndef __ASM_R8A7790_H__ 1#ifndef __ASM_R8A7790_H__
2#define __ASM_R8A7790_H__ 2#define __ASM_R8A7790_H__
3 3
4extern struct smp_operations r8a7790_smp_ops; 4extern const struct smp_operations r8a7790_smp_ops;
5 5
6#endif /* __ASM_R8A7790_H__ */ 6#endif /* __ASM_R8A7790_H__ */
diff --git a/arch/arm/mach-shmobile/r8a7791.h b/arch/arm/mach-shmobile/r8a7791.h
index 7ca0b7d0f59b..cf7a8405bd7f 100644
--- a/arch/arm/mach-shmobile/r8a7791.h
+++ b/arch/arm/mach-shmobile/r8a7791.h
@@ -1,6 +1,6 @@
1#ifndef __ASM_R8A7791_H__ 1#ifndef __ASM_R8A7791_H__
2#define __ASM_R8A7791_H__ 2#define __ASM_R8A7791_H__
3 3
4extern struct smp_operations r8a7791_smp_ops; 4extern const struct smp_operations r8a7791_smp_ops;
5 5
6#endif /* __ASM_R8A7791_H__ */ 6#endif /* __ASM_R8A7791_H__ */
diff --git a/arch/arm/mach-shmobile/setup-emev2.c b/arch/arm/mach-shmobile/setup-emev2.c
index 37f7b15c01bc..10b7cb5dcb3a 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 = {
42 NULL, 42 NULL,
43}; 43};
44 44
45extern struct smp_operations emev2_smp_ops; 45extern const struct smp_operations emev2_smp_ops;
46 46
47DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)") 47DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")
48 .smp = smp_ops(emev2_smp_ops), 48 .smp = smp_ops(emev2_smp_ops),
diff --git a/arch/arm/mach-shmobile/sh73a0.h b/arch/arm/mach-shmobile/sh73a0.h
index 39646806cf64..50ef24f780b3 100644
--- a/arch/arm/mach-shmobile/sh73a0.h
+++ b/arch/arm/mach-shmobile/sh73a0.h
@@ -1,6 +1,6 @@
1#ifndef __ASM_SH73A0_H__ 1#ifndef __ASM_SH73A0_H__
2#define __ASM_SH73A0_H__ 2#define __ASM_SH73A0_H__
3 3
4extern struct smp_operations sh73a0_smp_ops; 4extern const struct smp_operations sh73a0_smp_ops;
5 5
6#endif /* __ASM_SH73A0_H__ */ 6#endif /* __ASM_SH73A0_H__ */
diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c
index baff3b5efed8..adbac6963f2b 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)
49 shmobile_smp_scu_prepare_cpus(max_cpus); 49 shmobile_smp_scu_prepare_cpus(max_cpus);
50} 50}
51 51
52struct smp_operations emev2_smp_ops __initdata = { 52const struct smp_operations emev2_smp_ops __initconst = {
53 .smp_prepare_cpus = emev2_smp_prepare_cpus, 53 .smp_prepare_cpus = emev2_smp_prepare_cpus,
54 .smp_boot_secondary = emev2_boot_secondary, 54 .smp_boot_secondary = emev2_boot_secondary,
55}; 55};
diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c
index 353562b8a5ee..b854fe2095ad 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)
117} 117}
118#endif /* CONFIG_HOTPLUG_CPU */ 118#endif /* CONFIG_HOTPLUG_CPU */
119 119
120struct smp_operations r8a7779_smp_ops __initdata = { 120const struct smp_operations r8a7779_smp_ops __initconst = {
121 .smp_prepare_cpus = r8a7779_smp_prepare_cpus, 121 .smp_prepare_cpus = r8a7779_smp_prepare_cpus,
122 .smp_boot_secondary = r8a7779_boot_secondary, 122 .smp_boot_secondary = r8a7779_boot_secondary,
123#ifdef CONFIG_HOTPLUG_CPU 123#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/smp-r8a7790.c b/arch/arm/mach-shmobile/smp-r8a7790.c
index 4b33d432a364..f6426c6fdefc 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)
60 rcar_sysc_power_up(&r8a7790_ca7_scu); 60 rcar_sysc_power_up(&r8a7790_ca7_scu);
61} 61}
62 62
63struct smp_operations r8a7790_smp_ops __initdata = { 63const struct smp_operations r8a7790_smp_ops __initconst = {
64 .smp_prepare_cpus = r8a7790_smp_prepare_cpus, 64 .smp_prepare_cpus = r8a7790_smp_prepare_cpus,
65 .smp_boot_secondary = shmobile_smp_apmu_boot_secondary, 65 .smp_boot_secondary = shmobile_smp_apmu_boot_secondary,
66#ifdef CONFIG_HOTPLUG_CPU 66#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/smp-r8a7791.c b/arch/arm/mach-shmobile/smp-r8a7791.c
index b2508c0d276b..2d6417af73b5 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,
54 return shmobile_smp_apmu_boot_secondary(cpu, idle); 54 return shmobile_smp_apmu_boot_secondary(cpu, idle);
55} 55}
56 56
57struct smp_operations r8a7791_smp_ops __initdata = { 57const struct smp_operations r8a7791_smp_ops __initconst = {
58 .smp_prepare_cpus = r8a7791_smp_prepare_cpus, 58 .smp_prepare_cpus = r8a7791_smp_prepare_cpus,
59 .smp_boot_secondary = r8a7791_smp_boot_secondary, 59 .smp_boot_secondary = r8a7791_smp_boot_secondary,
60#ifdef CONFIG_HOTPLUG_CPU 60#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c
index bc2824a036e1..ee1a4b70604b 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)
56 shmobile_smp_scu_prepare_cpus(max_cpus); 56 shmobile_smp_scu_prepare_cpus(max_cpus);
57} 57}
58 58
59struct smp_operations sh73a0_smp_ops __initdata = { 59const struct smp_operations sh73a0_smp_ops __initconst = {
60 .smp_prepare_cpus = sh73a0_smp_prepare_cpus, 60 .smp_prepare_cpus = sh73a0_smp_prepare_cpus,
61 .smp_boot_secondary = sh73a0_boot_secondary, 61 .smp_boot_secondary = sh73a0_boot_secondary,
62#ifdef CONFIG_HOTPLUG_CPU 62#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig
index 90efdeb56be5..d0f62eacf59d 100644
--- a/arch/arm/mach-socfpga/Kconfig
+++ b/arch/arm/mach-socfpga/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_SOCFPGA 1menuconfig ARCH_SOCFPGA
2 bool "Altera SOCFPGA family" if ARCH_MULTI_V7 2 bool "Altera SOCFPGA family"
3 depends on ARCH_MULTI_V7
3 select ARCH_SUPPORTS_BIG_ENDIAN 4 select ARCH_SUPPORTS_BIG_ENDIAN
4 select ARM_AMBA 5 select ARM_AMBA
5 select ARM_GIC 6 select ARM_GIC
diff --git a/arch/arm/mach-socfpga/platsmp.c b/arch/arm/mach-socfpga/platsmp.c
index 15c8ce8965f4..cbb0a54df80a 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)
117 return 1; 117 return 1;
118} 118}
119 119
120static struct smp_operations socfpga_smp_ops __initdata = { 120static const struct smp_operations socfpga_smp_ops __initconst = {
121 .smp_prepare_cpus = socfpga_smp_prepare_cpus, 121 .smp_prepare_cpus = socfpga_smp_prepare_cpus,
122 .smp_boot_secondary = socfpga_boot_secondary, 122 .smp_boot_secondary = socfpga_boot_secondary,
123#ifdef CONFIG_HOTPLUG_CPU 123#ifdef CONFIG_HOTPLUG_CPU
@@ -126,7 +126,7 @@ static struct smp_operations socfpga_smp_ops __initdata = {
126#endif 126#endif
127}; 127};
128 128
129static struct smp_operations socfpga_a10_smp_ops __initdata = { 129static const struct smp_operations socfpga_a10_smp_ops __initconst = {
130 .smp_prepare_cpus = socfpga_smp_prepare_cpus, 130 .smp_prepare_cpus = socfpga_smp_prepare_cpus,
131 .smp_boot_secondary = socfpga_a10_boot_secondary, 131 .smp_boot_secondary = socfpga_a10_boot_secondary,
132#ifdef CONFIG_HOTPLUG_CPU 132#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-spear/Kconfig b/arch/arm/mach-spear/Kconfig
index b6f4bda273b3..ea9ea95630bd 100644
--- a/arch/arm/mach-spear/Kconfig
+++ b/arch/arm/mach-spear/Kconfig
@@ -3,7 +3,8 @@
3# 3#
4 4
5menuconfig PLAT_SPEAR 5menuconfig PLAT_SPEAR
6 bool "ST SPEAr Family" if ARCH_MULTI_V7 || ARCH_MULTI_V5 6 bool "ST SPEAr Family"
7 depends on ARCH_MULTI_V7 || ARCH_MULTI_V5
7 select ARCH_REQUIRE_GPIOLIB 8 select ARCH_REQUIRE_GPIOLIB
8 select ARM_AMBA 9 select ARM_AMBA
9 select CLKSRC_MMIO 10 select CLKSRC_MMIO
diff --git a/arch/arm/mach-spear/generic.h b/arch/arm/mach-spear/generic.h
index 06640914d9a0..909b97c0b237 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 *);
39void spear13xx_secondary_startup(void); 39void spear13xx_secondary_startup(void);
40void spear13xx_cpu_die(unsigned int cpu); 40void spear13xx_cpu_die(unsigned int cpu);
41 41
42extern struct smp_operations spear13xx_smp_ops; 42extern const struct smp_operations spear13xx_smp_ops;
43 43
44#ifdef CONFIG_MACH_SPEAR1310 44#ifdef CONFIG_MACH_SPEAR1310
45void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base); 45void __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 fd4297713d67..8d1e2d551786 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)
120 __raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION); 120 __raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION);
121} 121}
122 122
123struct smp_operations spear13xx_smp_ops __initdata = { 123const struct smp_operations spear13xx_smp_ops __initconst = {
124 .smp_init_cpus = spear13xx_smp_init_cpus, 124 .smp_init_cpus = spear13xx_smp_init_cpus,
125 .smp_prepare_cpus = spear13xx_smp_prepare_cpus, 125 .smp_prepare_cpus = spear13xx_smp_prepare_cpus,
126 .smp_secondary_init = spear13xx_secondary_init, 126 .smp_secondary_init = spear13xx_secondary_init,
diff --git a/arch/arm/mach-sti/Kconfig b/arch/arm/mach-sti/Kconfig
index 125865daaf17..736abe6d01dc 100644
--- a/arch/arm/mach-sti/Kconfig
+++ b/arch/arm/mach-sti/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_STI 1menuconfig ARCH_STI
2 bool "STMicroelectronics Consumer Electronics SOCs" if ARCH_MULTI_V7 2 bool "STMicroelectronics Consumer Electronics SOCs"
3 depends on ARCH_MULTI_V7
3 select ARM_GIC 4 select ARM_GIC
4 select ST_IRQCHIP 5 select ST_IRQCHIP
5 select ARM_GLOBAL_TIMER 6 select ARM_GLOBAL_TIMER
diff --git a/arch/arm/mach-sti/platsmp.c b/arch/arm/mach-sti/platsmp.c
index c4ad6eae67fa..ea5a2277ee46 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)
156 } 156 }
157} 157}
158 158
159struct smp_operations __initdata sti_smp_ops = { 159const struct smp_operations sti_smp_ops __initconst = {
160 .smp_prepare_cpus = sti_smp_prepare_cpus, 160 .smp_prepare_cpus = sti_smp_prepare_cpus,
161 .smp_secondary_init = sti_secondary_init, 161 .smp_secondary_init = sti_secondary_init,
162 .smp_boot_secondary = sti_boot_secondary, 162 .smp_boot_secondary = sti_boot_secondary,
diff --git a/arch/arm/mach-sti/smp.h b/arch/arm/mach-sti/smp.h
index ae22707d301f..d8a2f8758490 100644
--- a/arch/arm/mach-sti/smp.h
+++ b/arch/arm/mach-sti/smp.h
@@ -12,7 +12,7 @@
12#ifndef __MACH_STI_SMP_H 12#ifndef __MACH_STI_SMP_H
13#define __MACH_STI_SMP_H 13#define __MACH_STI_SMP_H
14 14
15extern struct smp_operations sti_smp_ops; 15extern const struct smp_operations sti_smp_ops;
16 16
17void sti_secondary_startup(void); 17void sti_secondary_startup(void);
18 18
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index 4efe2d43a126..c124d658b350 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_SUNXI 1menuconfig ARCH_SUNXI
2 bool "Allwinner SoCs" if ARCH_MULTI_V7 2 bool "Allwinner SoCs"
3 depends on ARCH_MULTI_V7
3 select ARCH_REQUIRE_GPIOLIB 4 select ARCH_REQUIRE_GPIOLIB
4 select ARCH_HAS_RESET_CONTROLLER 5 select ARCH_HAS_RESET_CONTROLLER
5 select CLKSRC_MMIO 6 select CLKSRC_MMIO
diff --git a/arch/arm/mach-sunxi/platsmp.c b/arch/arm/mach-sunxi/platsmp.c
index e8483ec79d67..6642267812c9 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,
116 return 0; 116 return 0;
117} 117}
118 118
119static struct smp_operations sun6i_smp_ops __initdata = { 119static const struct smp_operations sun6i_smp_ops __initconst = {
120 .smp_prepare_cpus = sun6i_smp_prepare_cpus, 120 .smp_prepare_cpus = sun6i_smp_prepare_cpus,
121 .smp_boot_secondary = sun6i_smp_boot_secondary, 121 .smp_boot_secondary = sun6i_smp_boot_secondary,
122}; 122};
@@ -185,7 +185,7 @@ static int sun8i_smp_boot_secondary(unsigned int cpu,
185 return 0; 185 return 0;
186} 186}
187 187
188struct smp_operations sun8i_smp_ops __initdata = { 188static const struct smp_operations sun8i_smp_ops __initconst = {
189 .smp_prepare_cpus = sun8i_smp_prepare_cpus, 189 .smp_prepare_cpus = sun8i_smp_prepare_cpus,
190 .smp_boot_secondary = sun8i_smp_boot_secondary, 190 .smp_boot_secondary = sun8i_smp_boot_secondary,
191}; 191};
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 0fa4c5f8b1be..a90f3556017f 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_TEGRA 1menuconfig ARCH_TEGRA
2 bool "NVIDIA Tegra" if ARCH_MULTI_V7 2 bool "NVIDIA Tegra"
3 depends on ARCH_MULTI_V7
3 select ARCH_REQUIRE_GPIOLIB 4 select ARCH_REQUIRE_GPIOLIB
4 select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS 5 select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS
5 select ARM_AMBA 6 select ARM_AMBA
diff --git a/arch/arm/mach-tegra/common.h b/arch/arm/mach-tegra/common.h
index 5900cc44f780..1f6fb808e236 100644
--- a/arch/arm/mach-tegra/common.h
+++ b/arch/arm/mach-tegra/common.h
@@ -1,4 +1,4 @@
1extern struct smp_operations tegra_smp_ops; 1extern const struct smp_operations tegra_smp_ops;
2 2
3extern int tegra_cpu_kill(unsigned int cpu); 3extern int tegra_cpu_kill(unsigned int cpu);
4extern void tegra_cpu_die(unsigned int cpu); 4extern void tegra_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
index b45086666648..f3f61dbbda97 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)
192 scu_enable(IO_ADDRESS(scu_a9_get_base())); 192 scu_enable(IO_ADDRESS(scu_a9_get_base()));
193} 193}
194 194
195struct smp_operations tegra_smp_ops __initdata = { 195const struct smp_operations tegra_smp_ops __initconst = {
196 .smp_prepare_cpus = tegra_smp_prepare_cpus, 196 .smp_prepare_cpus = tegra_smp_prepare_cpus,
197 .smp_secondary_init = tegra_secondary_init, 197 .smp_secondary_init = tegra_secondary_init,
198 .smp_boot_secondary = tegra_boot_secondary, 198 .smp_boot_secondary = tegra_boot_secondary,
diff --git a/arch/arm/mach-u300/Kconfig b/arch/arm/mach-u300/Kconfig
index bc51a71394af..301a98498453 100644
--- a/arch/arm/mach-u300/Kconfig
+++ b/arch/arm/mach-u300/Kconfig
@@ -1,6 +1,6 @@
1menuconfig ARCH_U300 1menuconfig ARCH_U300
2 bool "ST-Ericsson U300 Series" if ARCH_MULTI_V5 2 bool "ST-Ericsson U300 Series"
3 depends on MMU 3 depends on ARCH_MULTI_V5 && MMU
4 select ARCH_REQUIRE_GPIOLIB 4 select ARCH_REQUIRE_GPIOLIB
5 select ARM_AMBA 5 select ARM_AMBA
6 select ARM_VIC 6 select ARM_VIC
diff --git a/arch/arm/mach-uniphier/platsmp.c b/arch/arm/mach-uniphier/platsmp.c
index f0577664611c..e1cfc1d6e2f4 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,
201 return 0; 201 return 0;
202} 202}
203 203
204static struct smp_operations uniphier_smp_ops __initdata = { 204static const struct smp_operations uniphier_smp_ops __initconst = {
205 .smp_prepare_cpus = uniphier_smp_prepare_cpus, 205 .smp_prepare_cpus = uniphier_smp_prepare_cpus,
206 .smp_boot_secondary = uniphier_smp_boot_secondary, 206 .smp_boot_secondary = uniphier_smp_boot_secondary,
207}; 207};
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig
index c9ac19b24e5a..a5c3373c7f76 100644
--- a/arch/arm/mach-ux500/Kconfig
+++ b/arch/arm/mach-ux500/Kconfig
@@ -1,6 +1,6 @@
1menuconfig ARCH_U8500 1menuconfig ARCH_U8500
2 bool "ST-Ericsson U8500 Series" if ARCH_MULTI_V7 2 bool "ST-Ericsson U8500 Series"
3 depends on MMU 3 depends on ARCH_MULTI_V7 && MMU
4 select AB8500_CORE 4 select AB8500_CORE
5 select ABX500_CORE 5 select ABX500_CORE
6 select ARCH_REQUIRE_GPIOLIB 6 select ARCH_REQUIRE_GPIOLIB
diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile
index c8643ac5db71..edfff1ae1f8d 100644
--- a/arch/arm/mach-ux500/Makefile
+++ b/arch/arm/mach-ux500/Makefile
@@ -2,7 +2,7 @@
2# Makefile for the linux kernel, U8500 machine. 2# Makefile for the linux kernel, U8500 machine.
3# 3#
4 4
5obj-y := cpu.o id.o timer.o pm.o 5obj-y := cpu.o id.o pm.o
6obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o 6obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o
7obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o 7obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o
8obj-$(CONFIG_MACH_MOP500) += board-mop500-regulators.o \ 8obj-$(CONFIG_MACH_MOP500) += board-mop500-regulators.o \
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index f80560318c58..a0ffaad1fb61 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -156,8 +156,6 @@ static const char * stericsson_dt_platform_compat[] = {
156DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)") 156DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)")
157 .map_io = u8500_map_io, 157 .map_io = u8500_map_io,
158 .init_irq = ux500_init_irq, 158 .init_irq = ux500_init_irq,
159 /* we re-use nomadik timer here */
160 .init_time = ux500_timer_init,
161 .init_machine = u8500_init_machine, 159 .init_machine = u8500_init_machine,
162 .init_late = NULL, 160 .init_late = NULL,
163 .dt_compat = stericsson_dt_platform_compat, 161 .dt_compat = stericsson_dt_platform_compat,
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
index 41b81c4fbe63..82156cbc22ce 100644
--- a/arch/arm/mach-ux500/cpu.c
+++ b/arch/arm/mach-ux500/cpu.c
@@ -9,7 +9,6 @@
9#include <linux/platform_device.h> 9#include <linux/platform_device.h>
10#include <linux/io.h> 10#include <linux/io.h>
11#include <linux/mfd/dbx500-prcmu.h> 11#include <linux/mfd/dbx500-prcmu.h>
12#include <linux/clksrc-dbx500-prcmu.h>
13#include <linux/sys_soc.h> 12#include <linux/sys_soc.h>
14#include <linux/err.h> 13#include <linux/err.h>
15#include <linux/slab.h> 14#include <linux/slab.h>
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
index 70766b963758..88b8ab4f300c 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)
98 return 0; 98 return 0;
99} 99}
100 100
101struct smp_operations ux500_smp_ops __initdata = { 101static const struct smp_operations ux500_smp_ops __initconst = {
102 .smp_prepare_cpus = ux500_smp_prepare_cpus, 102 .smp_prepare_cpus = ux500_smp_prepare_cpus,
103 .smp_boot_secondary = ux500_boot_secondary, 103 .smp_boot_secondary = ux500_boot_secondary,
104#ifdef CONFIG_HOTPLUG_CPU 104#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-ux500/setup.h b/arch/arm/mach-ux500/setup.h
index 65876eac0761..c704254ab67c 100644
--- a/arch/arm/mach-ux500/setup.h
+++ b/arch/arm/mach-ux500/setup.h
@@ -12,7 +12,6 @@
12#define __ASM_ARCH_SETUP_H 12#define __ASM_ARCH_SETUP_H
13 13
14#include <asm/mach/arch.h> 14#include <asm/mach/arch.h>
15#include <asm/mach/time.h>
16#include <linux/init.h> 15#include <linux/init.h>
17#include <linux/mfd/abx500/ab8500.h> 16#include <linux/mfd/abx500/ab8500.h>
18 17
@@ -24,8 +23,6 @@ extern void __init ux500_init_irq(void);
24 23
25extern struct device *ux500_soc_device_init(const char *soc_id); 24extern struct device *ux500_soc_device_init(const char *soc_id);
26 25
27extern void ux500_timer_init(void);
28
29extern void ux500_cpu_die(unsigned int cpu); 26extern void ux500_cpu_die(unsigned int cpu);
30 27
31#endif /* __ASM_ARCH_SETUP_H */ 28#endif /* __ASM_ARCH_SETUP_H */
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
deleted file mode 100644
index 8d2d233f8e6c..000000000000
--- a/arch/arm/mach-ux500/timer.c
+++ /dev/null
@@ -1,48 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2011
3 *
4 * License Terms: GNU General Public License v2
5 * Author: Mattias Wallin <mattias.wallin@stericsson.com> for ST-Ericsson
6 */
7#include <linux/io.h>
8#include <linux/errno.h>
9#include <linux/clksrc-dbx500-prcmu.h>
10#include <linux/clocksource.h>
11#include <linux/of.h>
12#include <linux/of_address.h>
13
14#include "setup.h"
15
16#include "db8500-regs.h"
17#include "id.h"
18
19static const struct of_device_id prcmu_timer_of_match[] __initconst = {
20 { .compatible = "stericsson,db8500-prcmu-timer-4", },
21 { },
22};
23
24void __init ux500_timer_init(void)
25{
26 void __iomem *prcmu_timer_base;
27 void __iomem *tmp_base;
28 struct device_node *np;
29
30 if (cpu_is_u8500_family() || cpu_is_ux540_family())
31 prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
32 else
33 ux500_unknown_soc();
34
35 np = of_find_matching_node(NULL, prcmu_timer_of_match);
36 if (!np)
37 goto dt_fail;
38
39 tmp_base = of_iomap(np, 0);
40 if (!tmp_base)
41 goto dt_fail;
42
43 prcmu_timer_base = tmp_base;
44
45dt_fail:
46 clksrc_dbx500_prcmu_init(prcmu_timer_base);
47 clocksource_probe();
48}
diff --git a/arch/arm/mach-vexpress/Kconfig b/arch/arm/mach-vexpress/Kconfig
index 10f9389572da..398a297b7e09 100644
--- a/arch/arm/mach-vexpress/Kconfig
+++ b/arch/arm/mach-vexpress/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_VEXPRESS 1menuconfig ARCH_VEXPRESS
2 bool "ARM Ltd. Versatile Express family" if ARCH_MULTI_V7 2 bool "ARM Ltd. Versatile Express family"
3 depends on ARCH_MULTI_V7
3 select ARCH_REQUIRE_GPIOLIB 4 select ARCH_REQUIRE_GPIOLIB
4 select ARCH_SUPPORTS_BIG_ENDIAN 5 select ARCH_SUPPORTS_BIG_ENDIAN
5 select ARM_AMBA 6 select ARM_AMBA
diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h
index 2a11d3ac8c68..a162ab46ee02 100644
--- a/arch/arm/mach-vexpress/core.h
+++ b/arch/arm/mach-vexpress/core.h
@@ -1,5 +1,5 @@
1bool vexpress_smp_init_ops(void); 1bool vexpress_smp_init_ops(void);
2 2
3extern struct smp_operations vexpress_smp_dt_ops; 3extern const struct smp_operations vexpress_smp_dt_ops;
4 4
5extern void vexpress_cpu_die(unsigned int cpu); 5extern void vexpress_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c
index 83188cf1875d..8b8d0724f6c6 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)
64 vexpress_flags_set(virt_to_phys(versatile_secondary_startup)); 64 vexpress_flags_set(virt_to_phys(versatile_secondary_startup));
65} 65}
66 66
67struct smp_operations __initdata vexpress_smp_dt_ops = { 67const struct smp_operations vexpress_smp_dt_ops __initconst = {
68 .smp_prepare_cpus = vexpress_smp_dt_prepare_cpus, 68 .smp_prepare_cpus = vexpress_smp_dt_prepare_cpus,
69 .smp_secondary_init = versatile_secondary_init, 69 .smp_secondary_init = versatile_secondary_init,
70 .smp_boot_secondary = versatile_boot_secondary, 70 .smp_boot_secondary = versatile_boot_secondary,
diff --git a/arch/arm/mach-zx/Kconfig b/arch/arm/mach-zx/Kconfig
index 446334a25cf5..209c97944de2 100644
--- a/arch/arm/mach-zx/Kconfig
+++ b/arch/arm/mach-zx/Kconfig
@@ -1,5 +1,6 @@
1menuconfig ARCH_ZX 1menuconfig ARCH_ZX
2 bool "ZTE ZX family" if ARCH_MULTI_V7 2 bool "ZTE ZX family"
3 depends on ARCH_MULTI_V7
3 help 4 help
4 Support for ZTE ZX-based family of processors. TV 5 Support for ZTE ZX-based family of processors. TV
5 set-top-box processor is supported. More will be 6 set-top-box processor is supported. More will be
diff --git a/arch/arm/mach-zx/platsmp.c b/arch/arm/mach-zx/platsmp.c
index a3693982d65d..0297f92084e0 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)
176 scu_power_mode(scu_base, SCU_PM_NORMAL); 176 scu_power_mode(scu_base, SCU_PM_NORMAL);
177} 177}
178 178
179struct smp_operations zx_smp_ops __initdata = { 179static const struct smp_operations zx_smp_ops __initconst = {
180 .smp_prepare_cpus = zx_smp_prepare_cpus, 180 .smp_prepare_cpus = zx_smp_prepare_cpus,
181 .smp_secondary_init = zx_secondary_init, 181 .smp_secondary_init = zx_secondary_init,
182 .smp_boot_secondary = zx_boot_secondary, 182 .smp_boot_secondary = zx_boot_secondary,
diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig
index 78e5e007f52d..f287667e4fc5 100644
--- a/arch/arm/mach-zynq/Kconfig
+++ b/arch/arm/mach-zynq/Kconfig
@@ -1,5 +1,6 @@
1config ARCH_ZYNQ 1config ARCH_ZYNQ
2 bool "Xilinx Zynq ARM Cortex A9 Platform" if ARCH_MULTI_V7 2 bool "Xilinx Zynq ARM Cortex A9 Platform"
3 depends on ARCH_MULTI_V7
3 select ARCH_SUPPORTS_BIG_ENDIAN 4 select ARCH_SUPPORTS_BIG_ENDIAN
4 select ARM_AMBA 5 select ARM_AMBA
5 select ARM_GIC 6 select ARM_GIC
diff --git a/arch/arm/mach-zynq/common.h b/arch/arm/mach-zynq/common.h
index 79cda2e5fa4e..e771933db7e8 100644
--- a/arch/arm/mach-zynq/common.h
+++ b/arch/arm/mach-zynq/common.h
@@ -30,7 +30,7 @@ extern char zynq_secondary_trampoline;
30extern char zynq_secondary_trampoline_jump; 30extern char zynq_secondary_trampoline_jump;
31extern char zynq_secondary_trampoline_end; 31extern char zynq_secondary_trampoline_end;
32extern int zynq_cpun_start(u32 address, int cpu); 32extern int zynq_cpun_start(u32 address, int cpu);
33extern struct smp_operations zynq_smp_ops __initdata; 33extern const struct smp_operations zynq_smp_ops;
34#endif 34#endif
35 35
36extern void __iomem *zynq_scu_base; 36extern void __iomem *zynq_scu_base;
diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c
index f66816c49186..7cd9865bdeb7 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)
157} 157}
158#endif 158#endif
159 159
160struct smp_operations zynq_smp_ops __initdata = { 160const struct smp_operations zynq_smp_ops __initconst = {
161 .smp_init_cpus = zynq_smp_init_cpus, 161 .smp_init_cpus = zynq_smp_init_cpus,
162 .smp_prepare_cpus = zynq_smp_prepare_cpus, 162 .smp_prepare_cpus = zynq_smp_prepare_cpus,
163 .smp_boot_secondary = zynq_boot_secondary, 163 .smp_boot_secondary = zynq_boot_secondary,
diff --git a/drivers/clocksource/clksrc-dbx500-prcmu.c b/drivers/clocksource/clksrc-dbx500-prcmu.c
index b375106844d8..dfad6eb99662 100644
--- a/drivers/clocksource/clksrc-dbx500-prcmu.c
+++ b/drivers/clocksource/clksrc-dbx500-prcmu.c
@@ -12,8 +12,9 @@
12 * power domain. We use the Timer 4 for our always-on clock 12 * power domain. We use the Timer 4 for our always-on clock
13 * source on DB8500. 13 * source on DB8500.
14 */ 14 */
15#include <linux/of.h>
16#include <linux/of_address.h>
15#include <linux/clockchips.h> 17#include <linux/clockchips.h>
16#include <linux/clksrc-dbx500-prcmu.h>
17#include <linux/sched_clock.h> 18#include <linux/sched_clock.h>
18 19
19#define RATE_32K 32768 20#define RATE_32K 32768
@@ -63,9 +64,9 @@ static u64 notrace dbx500_prcmu_sched_clock_read(void)
63 64
64#endif 65#endif
65 66
66void __init clksrc_dbx500_prcmu_init(void __iomem *base) 67static void __init clksrc_dbx500_prcmu_init(struct device_node *node)
67{ 68{
68 clksrc_dbx500_timer_base = base; 69 clksrc_dbx500_timer_base = of_iomap(node, 0);
69 70
70 /* 71 /*
71 * The A9 sub system expects the timer to be configured as 72 * The A9 sub system expects the timer to be configured as
@@ -85,3 +86,5 @@ void __init clksrc_dbx500_prcmu_init(void __iomem *base)
85#endif 86#endif
86 clocksource_register_hz(&clocksource_dbx500_prcmu, RATE_32K); 87 clocksource_register_hz(&clocksource_dbx500_prcmu, RATE_32K);
87} 88}
89CLOCKSOURCE_OF_DECLARE(dbx500_prcmu, "stericsson,db8500-prcmu-timer-4",
90 clksrc_dbx500_prcmu_init);
diff --git a/include/linux/clksrc-dbx500-prcmu.h b/include/linux/clksrc-dbx500-prcmu.h
deleted file mode 100644
index 4fb8119c49e4..000000000000
--- a/include/linux/clksrc-dbx500-prcmu.h
+++ /dev/null
@@ -1,20 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2011
3 *
4 * License Terms: GNU General Public License v2
5 * Author: Mattias Wallin <mattias.wallin@stericsson.com>
6 *
7 */
8#ifndef __CLKSRC_DBX500_PRCMU_H
9#define __CLKSRC_DBX500_PRCMU_H
10
11#include <linux/init.h>
12#include <linux/io.h>
13
14#ifdef CONFIG_CLKSRC_DBX500_PRCMU
15void __init clksrc_dbx500_prcmu_init(void __iomem *base);
16#else
17static inline void __init clksrc_dbx500_prcmu_init(void __iomem *base) {}
18#endif
19
20#endif