On Fri, Jan 11, 2013 at 12:42 AM, Suzuki K. Poulose <[email protected]> wrote: > From: Suzuki K. Poulose <[email protected]> > > Handle the RAM Disks in uImage format
As opposed to simple ext2.gz ramdisk? -M > > Signed-off-by: Suzuki K. Poulose <[email protected]> > --- > kexec/arch/ppc/kexec-uImage-ppc.c | 22 +++++++++++++++++++++- > 1 file changed, 21 insertions(+), 1 deletion(-) > > diff --git a/kexec/arch/ppc/kexec-uImage-ppc.c > b/kexec/arch/ppc/kexec-uImage-ppc.c > index eaea3c1..58935c0 100644 > --- a/kexec/arch/ppc/kexec-uImage-ppc.c > +++ b/kexec/arch/ppc/kexec-uImage-ppc.c > @@ -46,6 +46,26 @@ void uImage_ppc_usage(void) > ); > } > > +char* slurp_ramdisk_ppc(const char *filename, off_t *r_size) > +{ > + struct Image_info img; > + off_t size; > + const unsigned char *buf = > + (const unsigned char *)slurp_file(filename, &size); > + > + /* Check if this is a uImage RAMDisk */ > + if (buf != (void*)0 && > + uImage_probe(buf, size, IH_ARCH_PPC) == IH_TYPE_RAMDISK) { > + if (uImage_load(buf, size, &img) != 0) > + die ("uImage: Reading %ld bytes from %s failed\n", > size, filename); > + buf = img.buf; > + size = img.len; > + } > + > + *r_size = size; > + return buf; > +} > + > int uImage_ppc_probe(const char *buf, off_t len) > { > int type; > @@ -196,7 +216,7 @@ static int ppc_load_bare_bits(int argc, char **argv, > const char *buf, > blob_buf = fixup_dtb_init(info, blob_buf, &blob_size, load_addr, > &dtb_addr); > > if (ramdisk) { > - seg_buf = slurp_file(ramdisk, &seg_size); > + seg_buf = slurp_ramdisk_ppc(ramdisk, &seg_size); > /* Load ramdisk at top of memory */ > hole_addr = add_buffer(info, seg_buf, seg_size, seg_size, > 0, dtb_addr + blob_size, max_addr, -1); > > > _______________________________________________ > kexec mailing list > [email protected] > http://lists.infradead.org/mailman/listinfo/kexec _______________________________________________ kexec mailing list [email protected] http://lists.infradead.org/mailman/listinfo/kexec
