[RFC PATCH 0/4] Add device-tree support to kexec-tools for ARM

Matthew Leach matthew.leach at arm.com
Wed Sep 5 07:43:59 EDT 2012


Hi all,

Running a kexec() on newer ARM platforms has become an issue as
information about the platform that is presented via device-tree is
required to boot a new kernel.

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.

All comments welcome,
Matt

Matthew Leach (4):
  Fix an overflow bug with address comparison
  Move libfdt to a generic location
  Add the dtc for device-tree manipulation
  Add device tree support to the ARM platform

 kexec/arch/arm/Makefile                            |  10 +
 kexec/arch/arm/include/arch/options.h              |   6 +-
 kexec/arch/arm/kexec-zImage-arm.c                  | 140 ++++-
 kexec/arch/ppc/Makefile                            |   8 +-
 kexec/kexec.c                                      |   2 +-
 util_lib/Makefile                                  |   2 +
 util_lib/dtc/Makefile.dtc                          |   9 +
 util_lib/dtc/data.c                                | 321 ++++++++++
 util_lib/dtc/dtc.c                                 |  44 ++
 util_lib/dtc/dtc.h                                 | 244 ++++++++
 util_lib/dtc/flattree.c                            | 649 +++++++++++++++++++++
 util_lib/dtc/fstree.c                              |  91 +++
 util_lib/dtc/livetree.c                            | 579 ++++++++++++++++++
 util_lib/dtc/srcpos.c                              | 252 ++++++++
 util_lib/dtc/srcpos.h                              |  87 +++
 util_lib/dtc/util.c                                |  59 ++
 util_lib/dtc/util.h                                |  56 ++
 util_lib/dtc/version_gen.h                         |   1 +
 .../arch/ppc => util_lib}/libfdt/Makefile.libfdt   |   8 +-
 {kexec/arch/ppc => util_lib}/libfdt/TODO           |   0
 {kexec/arch/ppc => util_lib}/libfdt/fdt.c          |   0
 {kexec/arch/ppc => util_lib}/libfdt/fdt.h          |   0
 {kexec/arch/ppc => util_lib}/libfdt/fdt_ro.c       |   0
 {kexec/arch/ppc => util_lib}/libfdt/fdt_rw.c       |   0
 {kexec/arch/ppc => util_lib}/libfdt/fdt_strerror.c |   0
 {kexec/arch/ppc => util_lib}/libfdt/fdt_sw.c       |   0
 {kexec/arch/ppc => util_lib}/libfdt/fdt_wip.c      |   0
 {kexec/arch/ppc => util_lib}/libfdt/libfdt.h       |   0
 {kexec/arch/ppc => util_lib}/libfdt/libfdt_env.h   |   0
 .../arch/ppc => util_lib}/libfdt/libfdt_internal.h |   0
 30 files changed, 2553 insertions(+), 15 deletions(-)
 create mode 100644 util_lib/dtc/Makefile.dtc
 create mode 100644 util_lib/dtc/data.c
 create mode 100644 util_lib/dtc/dtc.c
 create mode 100644 util_lib/dtc/dtc.h
 create mode 100644 util_lib/dtc/flattree.c
 create mode 100644 util_lib/dtc/fstree.c
 create mode 100644 util_lib/dtc/livetree.c
 create mode 100644 util_lib/dtc/srcpos.c
 create mode 100644 util_lib/dtc/srcpos.h
 create mode 100644 util_lib/dtc/util.c
 create mode 100644 util_lib/dtc/util.h
 create mode 100644 util_lib/dtc/version_gen.h
 rename {kexec/arch/ppc => util_lib}/libfdt/Makefile.libfdt (60%)
 rename {kexec/arch/ppc => util_lib}/libfdt/TODO (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/fdt.c (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/fdt.h (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/fdt_ro.c (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/fdt_rw.c (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/fdt_strerror.c (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/fdt_sw.c (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/fdt_wip.c (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/libfdt.h (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/libfdt_env.h (100%)
 rename {kexec/arch/ppc => util_lib}/libfdt/libfdt_internal.h (100%)

-- 
1.7.12




More information about the kexec mailing list