diff options
author | Vitaly Andrianov | 2014-08-04 07:12:20 -0500 |
---|---|---|
committer | Vitaly Andrianov | 2015-01-21 07:53:12 -0600 |
commit | 1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68 (patch) | |
tree | 63e5bcf75a53ad29e0ede47247d541c86a56be70 | |
parent | 6a7b41529cb59e9647873f44f3febf14ce3d3358 (diff) | |
download | linux-1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68.tar.gz linux-1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68.tar.xz linux-1ff3e1a767e340c7cdd9fa0a63fbdb4a7c56ff68.zip |
arm: keystone2: use ks2 aliased physical address for cpu_reset
KS2 system uses physical addresses outside of first 4GB memory range.
Once the cpu_reset() disables MMU that memory cannot be used.
To let the cpu_reset() successfully restart CPU we need to run it from
KS2 aliased memory address space.
Signed-off-by: Vitaly Andrianov <vitalya@ti.com>
-rw-r--r-- | arch/arm/kernel/process.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index ac4c2e5e17e..06f24f73110 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -86,7 +86,11 @@ static void __soft_restart(void *addr) | |||
86 | flush_cache_all(); | 86 | flush_cache_all(); |
87 | 87 | ||
88 | /* Switch to the identity mapping. */ | 88 | /* Switch to the identity mapping. */ |
89 | #ifdef CONFIG_ARCH_KEYSTONE | ||
90 | phys_reset = (phys_reset_t)(unsigned long)virt_to_idmap(cpu_reset); | ||
91 | #else | ||
89 | phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset); | 92 | phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset); |
93 | #endif | ||
90 | phys_reset((unsigned long)addr); | 94 | phys_reset((unsigned long)addr); |
91 | 95 | ||
92 | /* Should never get here. */ | 96 | /* Should never get here. */ |