Thread (5 messages) flat view 5 messages, 3 authors, 2015-10-06

Re: [kexec-lite PATCH V2] trampoline: Reset primary cpu endian to big-endian

From: Samuel Mendoza-Jonas <hidden>
Date: 2015-07-08 03:50:02

On 08/07/15 13:37, Scott Wood wrote:
On Wed, 2015-07-08 at 13:29 +1000, Samuel Mendoza-Jonas wrote:
quoted
Older big-endian ppc64 kernels don't include the FIXUP_ENDIAN check,
meaning if we kexec from a little-endian kernel the target kernel will
fail to boot.
Returning to big-endian before we enter the target kernel ensures that
the target kernel can boot whether or not it includes FIXUP_ENDIAN.

Signed-off-by: Samuel Mendoza-Jonas <redacted>
---
V2: As suggested by Anton take advantage of the rfid call and switch off
MSR_LE and branch to the target kernel in the same step.

 kexec_trampoline.S | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/kexec_trampoline.S b/kexec_trampoline.S
index a3eb314..3751112 100644
--- a/kexec_trampoline.S
+++ b/kexec_trampoline.S
@@ -88,8 +88,15 @@ start:
 
      li      r5,0
 
-     mtctr   r4
-     bctr
+     mtsrr0  r4
+
+     mfmsr   r5
+     clrrdi  r5,r5,1         /* Clear MSR_LE */
+     mtsrr1  r5
+
+     li      r5,0
+
+     rfid
Is kexec-lite meant to be specific to book3s-64?  The README just says "A 
simple kexec for flattened device tree platforms" and I see a __powerpc64__ 
ifdef in kexec_trampoline.S (but not in the above patch)...

-Scott
I believe that particular ifdef is to check if we're little-endian when reading
the device tree, but that's still a good point - I'll check with Anton.

-- 
-----------
LTC Ozlabs
IBM
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help