powerpc/47x: Kernel support for KEXEC
authorSuzuki Poulose <suzuki@in.ibm.com>
Sun, 15 Apr 2012 22:27:18 +0000 (22:27 +0000)
committerJosh Boyer <jwboyer@gmail.com>
Thu, 3 May 2012 12:40:23 +0000 (08:40 -0400)
commit68343020031585f861d93e2f25589598feadaff3
tree4045fe3442f3ace10f2f9225bf9c6f3f7ecb67a9
parentf13bfcc6961a5c9f511c401292db522edcd0b061
powerpc/47x: Kernel support for KEXEC

This patch adds support for creating 1:1 mapping for the PPC_47x during
a KEXEC. The implementation is similar to that of the PPC440x which is
described here :

http://patchwork.ozlabs.org/patch/104323/

PPC_47x MMU :

The 47x uses Unified TLB 1024 entries, with 4-way associative mapping
(4 x 256 entries). The index to be used is calculated by the MMU by
hashing the PID, EPN and TS. The software can choose to specify the way
by setting bit 0(enable way select) and the way in bits 1-2 in the TLB
Word 0.

Implementation:

The patch erases all the UTLB entries which includes the tlb covering
the mapping for our code. The shadow TLB caches the mapping for the
running code which helps us to continue the execution until we do
isync/rfi. We then create a tmp mapping for the current code in the
other address space (TS) and switch to it.

Then we create a 1:1 mapping(EPN=RPN) for 0-2GiB in the original
address space and switch to the new mapping.

TODO: Add SMP support.

Signed-off-by: Suzuki K. Poulose <suzuki@in.ibm.com>
Signed-off-by: Josh Boyer <jwboyer@gmail.com>
arch/powerpc/Kconfig
arch/powerpc/kernel/misc_32.S