Hi all, Running a kexec() on ARM platforms has become an issue as information about the platform that is presented via device-tree is required to boot newer kernels. The ATAGs kernel code is re-used, replacing the ATAGs with a device-tree blob so that only kexec-tools needs to be changed. There are two options for generating a dtb to be passed to the kernel from kexec-tools: 1) Read in the device-tree that is exposed in /proc/device-tree and flatten this out into a dtb. 2) Allow the user to specify a dtb file on the command line. These blobs are then loaded into memory before the kernel image and the address passed through to r2, as stated in the ARM booting documentation. These patches depend upon a kernel patch, namely: http://lists.infradead.org/pipermail/linux-arm-kernel/2012-September/118275.html Simon - you are welcome to add your signed-off-by to my final patch as I incorporated bits of your final patch into mine. Matt Matthew Leach (1): ARM: Add device tree support to the ARM platform Simon Horman (6): libfdt: Move from kexec/arch/ppc/libfdt/ to kexec/libfdt/ kexec-elf.h: Include headers for types used fs2dt: Add a generic copy of fs2dt ppc64: Move 64bit powerpc to use generic fs2dt code powerpc: Move 32bit powerpc to use generic fs2dt code arm: Make use of memory_ranges kexec/Makefile | 6 + kexec/arch/arm/Makefile | 13 + kexec/arch/arm/crashdump-arm.c | 45 ++- kexec/arch/arm/crashdump-arm.h | 2 + kexec/arch/arm/include/arch/options.h | 6 +- kexec/arch/arm/kexec-arm.h | 7 + kexec/arch/arm/kexec-zImage-arm.c | 87 ++++- kexec/arch/ppc/Makefile | 17 +- kexec/arch/ppc/crashdump-powerpc.c | 2 +- kexec/arch/ppc/crashdump-powerpc.h | 2 + kexec/arch/ppc/fs2dt.c | 450 -------------------------- kexec/arch/ppc/kexec-elf-ppc.c | 2 - kexec/arch/ppc/kexec-ppc.h | 26 +- kexec/arch/ppc/kexec-uImage-ppc.c | 3 - kexec/arch/ppc64/Makefile | 7 +- kexec/arch/ppc64/crashdump-ppc64.c | 3 +- kexec/arch/ppc64/crashdump-ppc64.h | 4 + kexec/arch/ppc64/kexec-elf-ppc64.c | 4 +- kexec/arch/ppc64/kexec-ppc64.c | 1 + kexec/arch/ppc64/kexec-ppc64.h | 29 +- kexec/arch_reuse_initrd.c | 2 + kexec/{arch/ppc64 => }/fs2dt.c | 277 +++++++++------- kexec/fs2dt.h | 38 +++ kexec/kexec-elf.h | 3 + kexec/kexec.h | 5 + kexec/{arch/ppc => }/libfdt/Makefile.libfdt | 8 +- kexec/{arch/ppc => }/libfdt/TODO | 0 kexec/{arch/ppc => }/libfdt/fdt.c | 0 kexec/{arch/ppc => }/libfdt/fdt.h | 0 kexec/{arch/ppc => }/libfdt/fdt_ro.c | 0 kexec/{arch/ppc => }/libfdt/fdt_rw.c | 0 kexec/{arch/ppc => }/libfdt/fdt_strerror.c | 0 kexec/{arch/ppc => }/libfdt/fdt_sw.c | 0 kexec/{arch/ppc => }/libfdt/fdt_wip.c | 0 kexec/{arch/ppc => }/libfdt/libfdt.h | 0 kexec/{arch/ppc => }/libfdt/libfdt_env.h | 0 kexec/{arch/ppc => }/libfdt/libfdt_internal.h | 0 37 files changed, 392 insertions(+), 657 deletions(-) delete mode 100644 kexec/arch/ppc/fs2dt.c rename kexec/{arch/ppc64 => }/fs2dt.c (77%) create mode 100644 kexec/fs2dt.h rename kexec/{arch/ppc => }/libfdt/Makefile.libfdt (60%) rename kexec/{arch/ppc => }/libfdt/TODO (100%) rename kexec/{arch/ppc => }/libfdt/fdt.c (100%) rename kexec/{arch/ppc => }/libfdt/fdt.h (100%) rename kexec/{arch/ppc => }/libfdt/fdt_ro.c (100%) rename kexec/{arch/ppc => }/libfdt/fdt_rw.c (100%) rename kexec/{arch/ppc => }/libfdt/fdt_strerror.c (100%) rename kexec/{arch/ppc => }/libfdt/fdt_sw.c (100%) rename kexec/{arch/ppc => }/libfdt/fdt_wip.c (100%) rename kexec/{arch/ppc => }/libfdt/libfdt.h (100%) rename kexec/{arch/ppc => }/libfdt/libfdt_env.h (100%) rename kexec/{arch/ppc => }/libfdt/libfdt_internal.h (100%) -- 1.7.12