Initialize the PID register with kernel pid (0) before we start
setting the TLB mapping for KEXEC. Also set the MMUCR[TID] to kernel
PID.

This was spotted while testing the kexec on ISS for 47x. ISS  doesn't
return a successful tlbsx for a kernel address with PID set to a user PID.
Though the hardware/qemu/simics work fine.

This patch is harmless and initializes the PID to 0 (kernel PID) which
is usually the case during a normal kernel boot. This would fix the kexec
on ISS for 440. I have tested this patch on sequoia board.

Signed-off-by: Suzuki K Poulose <suz...@in.ibm.com>
Cc:     Josh Boyer <jwbo...@us.ibm.com>
---

 arch/powerpc/kernel/misc_32.S |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 7cd07b4..d7e05d2 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -761,8 +761,12 @@ relocate_new_kernel:
        mr      r30, r4
        mr      r31, r5
 
-       /* Load our MSR_IS and TID to MMUCR for TLB search */
-       mfspr   r3,SPRN_PID
+       /* 
+        * Load the PID with kernel PID (0).
+        * Also load our MSR_IS and TID to MMUCR for TLB search.
+        */
+       li      r3, 0
+       mtspr   SPRN_PID, r3
        mfmsr   r4
        andi.   r4,r4,MSR_IS@l
        beq     wmmucr

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to