aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/suspend.h
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2019-02-18 09:31:41 +0100
committerRussell King <rmk+kernel@armlinux.org.uk>2019-02-26 11:32:54 +0000
commitca70ea43f80c98582f5ffbbd1e6f4da2742da0c4 (patch)
tree761a508fd520c37d930a0fce06c319646ab5c255 /arch/arm/include/asm/suspend.h
parentARM: 8840/1: use a raw_spinlock_t in unwind (diff)
downloadlinux-dev-ca70ea43f80c98582f5ffbbd1e6f4da2742da0c4.tar.xz
linux-dev-ca70ea43f80c98582f5ffbbd1e6f4da2742da0c4.zip
ARM: 8847/1: pm: fix HYP/SVC mode mismatch when MCPM is used
MCPM does a soft reset of the CPUs and uses common cpu_resume() routine to perform low-level platform initialization. This results in a try to install HYP stubs for the second time for each CPU and results in false HYP/SVC mode mismatch detection. The HYP stubs are already installed at the beginning of the kernel initialization on the boot CPU (head.S) or in the secondary_startup() for other CPUs. To fix this issue MCPM code should use a cpu_resume() routine without HYP stubs installation. This change fixes HYP/SVC mode mismatch on Samsung Exynos5422-based Odroid XU3/XU4/HC1 boards. Fixes: 3721924c8154 ("ARM: 8081/1: MCPM: provide infrastructure to allow for MCPM loopback") Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Acked-by: Nicolas Pitre <nico@linaro.org> Tested-by: Anand Moon <linux.amoon@gmail.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'arch/arm/include/asm/suspend.h')
-rw-r--r--arch/arm/include/asm/suspend.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/include/asm/suspend.h b/arch/arm/include/asm/suspend.h
index 452bbdcbcc83..506314265c6f 100644
--- a/arch/arm/include/asm/suspend.h
+++ b/arch/arm/include/asm/suspend.h
@@ -10,6 +10,7 @@ struct sleep_save_sp {
};
extern void cpu_resume(void);
+extern void cpu_resume_no_hyp(void);
extern void cpu_resume_arm(void);
extern int cpu_suspend(unsigned long, int (*)(unsigned long));