On Wed, Mar 20, 2019 at 09:19:43AM +0100, Marek Szyprowski wrote: > Support for Exynos5420/5422/5800 SoCs requires MCPM to properly boot all > CPU cores on all currectly supported platforms: Peach Pit (Exynos5420), > Odroid XU3/XU3lite/XU4/HC1 (Exynos5422) and Peach Pi (Exynos5800). > Without it some CPU cores fail to come online. Remove then the ability to > disable MCPM and make it mandatory when Exynos542x/5800 support is > enabled. > > Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > --- > v2: rebased on top of the current exynos-next > --- > arch/arm/mach-exynos/Kconfig | 12 +++--------- > arch/arm/mach-exynos/Makefile | 2 +- > arch/arm/mach-exynos/suspend.c | 12 ++++-------- > 3 files changed, 8 insertions(+), 18 deletions(-) > > diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig > index b40963cf91c7..62b734a8092b 100644 > --- a/arch/arm/mach-exynos/Kconfig > +++ b/arch/arm/mach-exynos/Kconfig > @@ -106,21 +106,15 @@ config SOC_EXYNOS5420 > bool "SAMSUNG EXYNOS5420" > default y > depends on ARCH_EXYNOS5 > + select MCPM > + select ARM_CCI400_PORT_CTRL > + select ARM_CPU_SUSPEND > > config SOC_EXYNOS5800 > bool "SAMSUNG EXYNOS5800" > default y > depends on SOC_EXYNOS5420 > > -config EXYNOS5420_MCPM While applying I noticed that it still leaves CONFIG_EXYNOS5420_MCPM in defconfigs. Please clean them as well in this patch. Best regards, Krzysztof > - bool "Exynos5420 Multi-Cluster PM support" > - depends on MCPM && SOC_EXYNOS5420 > - select ARM_CCI400_PORT_CTRL > - select ARM_CPU_SUSPEND > - help > - This is needed to provide CPU and cluster power management > - on Exynos5420 implementing big.LITTLE. > - > config EXYNOS_CPU_SUSPEND > bool > select ARM_CPU_SUSPEND > diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile > index cd00c82a1add..fb381d69f8d1 100644 > --- a/arch/arm/mach-exynos/Makefile > +++ b/arch/arm/mach-exynos/Makefile > @@ -18,5 +18,5 @@ plus_sec := $(call as-instr,.arch_extension sec,+sec) > AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec) > AFLAGS_sleep.o :=-Wa,-march=armv7-a$(plus_sec) > > -obj-$(CONFIG_EXYNOS5420_MCPM) += mcpm-exynos.o > +obj-$(CONFIG_SOC_EXYNOS5420) += mcpm-exynos.o > CFLAGS_mcpm-exynos.o += -march=armv7-a > diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c > index 6975feeae2be..63996b3b5014 100644 > --- a/arch/arm/mach-exynos/suspend.c > +++ b/arch/arm/mach-exynos/suspend.c > @@ -269,10 +269,8 @@ static int exynos5420_cpu_suspend(unsigned long arg) > unsigned int cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); > unsigned int cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); > > - if (IS_ENABLED(CONFIG_EXYNOS5420_MCPM)) { > - mcpm_set_entry_vector(cpu, cluster, exynos_cpu_resume); > - mcpm_cpu_suspend(); > - } > + mcpm_set_entry_vector(cpu, cluster, exynos_cpu_resume); > + mcpm_cpu_suspend(); > > pr_info("Failed to suspend the system\n"); > > @@ -352,8 +350,7 @@ static void exynos5420_pm_prepare(void) > exynos_pm_enter_sleep_mode(); > > /* ensure at least INFORM0 has the resume address */ > - if (IS_ENABLED(CONFIG_EXYNOS5420_MCPM)) > - pmu_raw_writel(__pa_symbol(mcpm_entry_point), S5P_INFORM0); > + pmu_raw_writel(__pa_symbol(mcpm_entry_point), S5P_INFORM0); > > tmp = pmu_raw_readl(EXYNOS_L2_OPTION(0)); > tmp &= ~EXYNOS_L2_USE_RETENTION; > @@ -456,8 +453,7 @@ static void exynos5420_prepare_pm_resume(void) > mpidr = read_cpuid_mpidr(); > cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); > > - if (IS_ENABLED(CONFIG_EXYNOS5420_MCPM)) > - WARN_ON(mcpm_cpu_powered_up()); > + WARN_ON(mcpm_cpu_powered_up()); > > if (IS_ENABLED(CONFIG_HW_PERF_EVENTS) && cluster != 0) { > /* > -- > 2.17.1 >