summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuzuki K. Poulose <suzuki@in.ibm.com>2013-09-24 10:53:10 +0530
committerSimon Horman <horms@verge.net.au>2013-09-25 16:11:18 +0900
commit86b8bf44d27579bc3c90be053f19df17253c69d7 (patch)
treefe52fbfcad93d272b6fa420789edea6f9e913f6e
parentd8b0fa06634e7dd4402d994a820775f6c9243143 (diff)
kexec/ppc: Check for a uImage initrd with ELF kernel
We should check if the initrd is in uImage format, when the kernel might be in ELF. Signed-off-by : Suzuki K Poulose <suzuki@in.ibm.com> Signed-off-by : Athira Rajeev<atrajeev@in.ibm.com> Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r--kexec/arch/ppc/kexec-elf-ppc.c2
-rw-r--r--kexec/arch/ppc/kexec-ppc.h3
2 files changed, 4 insertions, 1 deletions
diff --git a/kexec/arch/ppc/kexec-elf-ppc.c b/kexec/arch/ppc/kexec-elf-ppc.c
index 98cae9c..df1b521 100644
--- a/kexec/arch/ppc/kexec-elf-ppc.c
+++ b/kexec/arch/ppc/kexec-elf-ppc.c
@@ -371,7 +371,7 @@ int elf_ppc_load(int argc, char **argv, const char *buf, off_t len,
blob_buf = fixup_dtb_init(info, blob_buf, &blob_size, kernel_addr, &dtb_addr);
if (ramdisk) {
- seg_buf = slurp_file(ramdisk, &seg_size);
+ seg_buf = slurp_ramdisk_ppc(ramdisk, &seg_size);
/* load the ramdisk *above* the device tree */
hole_addr = add_buffer(info, seg_buf, seg_size, seg_size,
0, dtb_addr + blob_size + 1, max_addr, -1);
diff --git a/kexec/arch/ppc/kexec-ppc.h b/kexec/arch/ppc/kexec-ppc.h
index 68728c6..904cf48 100644
--- a/kexec/arch/ppc/kexec-ppc.h
+++ b/kexec/arch/ppc/kexec-ppc.h
@@ -78,4 +78,7 @@ extern int read_memory_region_limits(int fd, unsigned long long *start,
#define COMMAND_LINE_SIZE 512 /* from kernel */
/*fs2dt*/
void reserve(unsigned long long where, unsigned long long length);
+
+/* Defined kexec-uImage-ppc.c */
+extern char* slurp_ramdisk_ppc(const char *filename, off_t *r_size);
#endif /* KEXEC_PPC_H */