On Fri, Apr 11, 2014 at 12:10:30PM +0200, Laurent Dufour wrote: > The initrd values exposed in the device tree of the kexeced kernel must be > encoded in Big Endian format. > > Without this patch, kexeced LE kernel are expected to panic when dealing > with the initrd image. > > Signed-off-by: Laurent Dufour <ldufour at linux.vnet.ibm.com> Thanks, applied. > --- > kexec/fs2dt.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/kexec/fs2dt.c b/kexec/fs2dt.c > index 5e6b98d..2a90979 100644 > --- a/kexec/fs2dt.c > +++ b/kexec/fs2dt.c > @@ -531,7 +531,7 @@ static void putnode(void) > /* Add initrd entries to the second kernel */ > if (initrd_base && initrd_size && !strcmp(basename,"chosen/")) { > int len = 8; > - unsigned long long initrd_end; > + uint64_t bevalue; > > dt_reserve(&dt, 12); /* both props, of 6 words ea. */ > *dt++ = cpu_to_be32(3); > @@ -539,7 +539,8 @@ static void putnode(void) > *dt++ = cpu_to_be32(propnum("linux,initrd-start")); > pad_structure_block(len); > > - memcpy(dt,&initrd_base,len); > + bevalue = cpu_to_be64(initrd_base); > + memcpy(dt, &bevalue, len); > dt += (len + 3)/4; > > len = 8; > @@ -547,10 +548,10 @@ static void putnode(void) > *dt++ = cpu_to_be32(len); > *dt++ = cpu_to_be32(propnum("linux,initrd-end")); > > - initrd_end = initrd_base + initrd_size; > + bevalue = cpu_to_be64(initrd_base + initrd_size); > pad_structure_block(len); > > - memcpy(dt,&initrd_end,len); > + memcpy(dt, &bevalue, len); > dt += (len + 3)/4; > > reserve(initrd_base, initrd_size); >