ARM: reset: implement soft_restart for jumping to a physical address
authorWill Deacon <will.deacon@arm.com>
Mon, 6 Jun 2011 11:28:54 +0000 (12:28 +0100)
committerLeann Ogasawara <leann.ogasawara@canonical.com>
Mon, 2 Apr 2012 20:17:09 +0000 (13:17 -0700)
commita0fb3d127ddd9474b53aa1d9fc02894c5bdac31b
treeb8dcc9afba19e1f3688975231e38acb6198bfebb
parentc00cdb8fe7858af4c91dfbca93a646baebc09d4d
ARM: reset: implement soft_restart for jumping to a physical address

Tools such as kexec and CPU hotplug require a way to reset the processor
and branch to some code in physical space. This requires various bits of
jiggery pokery with the caches and MMU which, when it goes wrong, tends
to lock up the system.

This patch fleshes out the soft_restart implementation so that it
branches to the reset code using the identity mapping. This requires us
to change to a temporary stack, held within the kernel image as a static
array, to avoid conflicting with the new view of memory.

Signed-off-by: Will Deacon <will.deacon@arm.com>
(cherry picked from commit 290130a17718c1451bb8a77a5e2510e0279bd5f3)

Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
arch/arm/kernel/process.c