powerpc/476fpe: Add support for kexec
authorAlistair Popple <alistair@popple.id.au>
Mon, 14 Dec 2015 03:31:24 +0000 (14:31 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 17 Dec 2015 11:41:00 +0000 (22:41 +1100)
PPC476FPE has a different PVR from previous PPC476 processors. The
kexec code checks the PVR in order to correctly setup the MMU. When
the initial support for 476FPE processors was added the corresponding
change in the kexec code was missed. This patch simply adds the check
and solves the following bug on kexec:

kexec: Starting new kernel
Bye!
Unable to handle kernel paging request for instruction fetch
Faulting instruction address: 0xee9a50f8
cpu 0x0: Vector: 400 (Instruction Access) at [ee9d7d20]
    pc: ee9a50f8
    lr: ee9a50e4
    sp: ee9d7dd0
    msr: 21020
    current = 0xee40f000
    pid   = 960, comm = kexec
enter ? for help
[link register   ] ee9a50e4
[ee9d7dd0c0013748 default_machine_kexec+0x58/0x70 (unreliable)
[ee9d7df0c0012f04 machine_kexec+0x34/0x40
[ee9d7e00c00aa1ec kernel_kexec+0x9c/0xb0
[ee9d7e20c005d704 SyS_reboot+0x1f4/0x220
[ee9d7f40c000db68 ret_from_syscall+0x0/0x3c

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/misc_32.S

index ed3ab509facac91ebe8625570d9f15c203b45f20..be8edd67f05be889d971d714e4ef53a40d410081 100644 (file)
@@ -743,6 +743,8 @@ relocate_new_kernel:
        /* Check for 47x cores */
        mfspr   r3,SPRN_PVR
        srwi    r3,r3,16
+       cmplwi  cr0,r3,PVR_476FPE@h
+       beq     setup_map_47x
        cmplwi  cr0,r3,PVR_476@h
        beq     setup_map_47x
        cmplwi  cr0,r3,PVR_476_ISS@h