Re: [PATCH V2 1/2] powerpc/kexec: Reset secondary cpu endianess before kexec

2015-07-08 Thread Scott Wood
On Wed, 2015-07-08 at 14:37 +1000, Samuel Mendoza-Jonas wrote:
 If the target kernel does not inlcude the FIXUP_ENDIAN check, coming
 from a different-endian kernel will cause the target kernel to panic.
 All ppc64 kernels can handle starting in big-endian mode, so return to
 big-endian before branching into the target kernel.
 
 This mainly affects pseries as secondaries on powernv are returned to
 OPAL.
 
 Signed-off-by: Samuel Mendoza-Jonas sam...@au1.ibm.com
 ---
 v2: Add an #ifdef for subarch-specific code
 Neaten the endian check (and extra call to mfmsr!) by modifying the msr 
 and
 branching to the target kernel in the same call to rfid.
  arch/powerpc/kernel/misc_64.S | 13 +++--
  1 file changed, 11 insertions(+), 2 deletions(-)
 
 diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
 index 4e314b9..89f0600 100644
 --- a/arch/powerpc/kernel/misc_64.S
 +++ b/arch/powerpc/kernel/misc_64.S
 @@ -475,9 +475,18 @@ _GLOBAL(kexec_wait)
  #ifdef CONFIG_KEXEC  /* use no memory without kexec */
   lwz r4,0(r5)
   cmpwi   0,r4,0
 - bnea0x60
 + beq 99b
 +#ifdef CONFIG_PPC_BOOK3S_64
 + li  r10,0x60
 + mfmsr   r11
 + clrrdi  r11,r11,1   /* Clear MSR_LE */
 + mtsrr0  r10
 + mtsrr1  r11
 + rfid
 +#else
 + b   0x60
 +#endif
  #endif
 - b   99b

b 0x60 needs to be ba 0x60.

-Scott

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

[PATCH V2 1/2] powerpc/kexec: Reset secondary cpu endianess before kexec

2015-07-07 Thread Samuel Mendoza-Jonas
If the target kernel does not inlcude the FIXUP_ENDIAN check, coming
from a different-endian kernel will cause the target kernel to panic.
All ppc64 kernels can handle starting in big-endian mode, so return to
big-endian before branching into the target kernel.

This mainly affects pseries as secondaries on powernv are returned to
OPAL.

Signed-off-by: Samuel Mendoza-Jonas sam...@au1.ibm.com
---
v2: Add an #ifdef for subarch-specific code
Neaten the endian check (and extra call to mfmsr!) by modifying the msr and
branching to the target kernel in the same call to rfid.
 arch/powerpc/kernel/misc_64.S | 13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
index 4e314b9..89f0600 100644
--- a/arch/powerpc/kernel/misc_64.S
+++ b/arch/powerpc/kernel/misc_64.S
@@ -475,9 +475,18 @@ _GLOBAL(kexec_wait)
 #ifdef CONFIG_KEXEC/* use no memory without kexec */
lwz r4,0(r5)
cmpwi   0,r4,0
-   bnea0x60
+   beq 99b
+#ifdef CONFIG_PPC_BOOK3S_64
+   li  r10,0x60
+   mfmsr   r11
+   clrrdi  r11,r11,1   /* Clear MSR_LE */
+   mtsrr0  r10
+   mtsrr1  r11
+   rfid
+#else
+   b   0x60
+#endif
 #endif
-   b   99b
 
 /* this can be in text because we won't change it until we are
  * running in real anyways
-- 
2.4.5

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