mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [RFC v2 0/8] MIPS: use kexec to load ELF linux images
@ 2016-12-05  9:40 Antony Pavlov
  2016-12-05  9:40 ` [RFC v2 1/8] MIPS: add virt_to_phys() and phys_to_virt() Antony Pavlov
                   ` (7 more replies)
  0 siblings, 8 replies; 13+ messages in thread
From: Antony Pavlov @ 2016-12-05  9:40 UTC (permalink / raw)
  To: barebox; +Cc: Peter Mamonov

This patchseries introduces a suitable way for loading
ELF linux kernel images on MIPS. You can load normal vmlinux
images or compressed self-extractable vmlinuz images.

The patchseries and additional patch with pre-compiled demo
vmlinux image for MIPS Malta can be obtained here:
  https://github.com/frantony/barebox/tree/20161205.malta-bootm-vmlinux
Please see this commit message
  https://github.com/frantony/barebox/commit/23b24122a4bd1d59266ae585364c792dc9140ecb
for instructions.

The code for actual ELF loading and relocation is imported
from
  kexec-tools (git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools)
and
  linux kernel (http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git).

There is no common practice on passing cmdline to the linux kernel
on MIPS machines. We have to realize it's own cmdline passing
routine for every MIPS machine supported by barebox.
The 'MIPS: malta: enable kexec' patch
demonstrates how to do it for MIPS Malta.

To separate common ELF handling routines and machine-specific
cmdline handling the 'reboot()' call is introduced.
The common code checks and loads ELF-file, the MIPS-specific
code arrange ELF segments in the appropriate memory places
and tunes relocator; next reboot() is called and machine-specific
code works on cmdline passing.

The 'import initial kexec stuff' contains some codes stealed from kexec-tools as-is.
These codes have some checkpatch.pl issues.


Antony Pavlov (7):
  MIPS: add virt_to_phys() and phys_to_virt()
  resource: add create_resource() helper function
  import initial kexec stuff
  filetype: add ELF type
  bootm: add kexec ELF support
  MIPS: add kexec ELF loading support
  MIPS: malta: enable kexec

Peter Mamonov (1):
  MIPS: c-r4k: add support for secondary cache

Changes since RFC v1 (http://lists.infradead.org/pipermail/barebox/2014-April/018651.html):

   * add 64 bit ELF support by Peter Mamonov;
   * update relocate_new_kernel arguments passing mechanism;
   * test with linux-4.9-rc8.

TODOs:

   * add DT and initrd passing support.

 arch/mips/Kconfig                |   1 +
 arch/mips/include/asm/cacheops.h |  10 +
 arch/mips/include/asm/elf.h      |   8 +-
 arch/mips/include/asm/io.h       |  35 ++
 arch/mips/lib/Makefile           |   3 +
 arch/mips/lib/c-r4k.c            |  19 +-
 arch/mips/lib/kexec-mips.c       | 171 +++++++++
 arch/mips/lib/relocate_kernel.S  |  97 +++++
 arch/mips/mach-malta/Makefile    |   1 +
 arch/mips/mach-malta/reboot.c    | 104 ++++++
 commands/Kconfig                 |   7 +
 common/Kconfig                   |   3 +
 common/filetype.c                |   5 +
 common/resource.c                |  15 +
 include/filetype.h               |   1 +
 include/linux/ioport.h           |   2 +
 include/linux/reboot.h           |  14 +
 lib/Makefile                     |   1 +
 lib/kexec/Makefile               |   4 +
 lib/kexec/kexec-bootm-elf.c      |  37 ++
 lib/kexec/kexec-elf-exec.c       |  82 ++++
 lib/kexec/kexec-elf.c            | 783 +++++++++++++++++++++++++++++++++++++++
 lib/kexec/kexec-elf.h            |  86 +++++
 lib/kexec/kexec.c                | 151 ++++++++
 lib/kexec/kexec.h                |  89 +++++
 25 files changed, 1722 insertions(+), 7 deletions(-)
 create mode 100644 arch/mips/lib/kexec-mips.c
 create mode 100644 arch/mips/lib/relocate_kernel.S
 create mode 100644 arch/mips/mach-malta/reboot.c
 create mode 100644 include/linux/reboot.h
 create mode 100644 lib/kexec/Makefile
 create mode 100644 lib/kexec/kexec-bootm-elf.c
 create mode 100644 lib/kexec/kexec-elf-exec.c
 create mode 100644 lib/kexec/kexec-elf.c
 create mode 100644 lib/kexec/kexec-elf.h
 create mode 100644 lib/kexec/kexec.c
 create mode 100644 lib/kexec/kexec.h

Cc: Peter Mamonov <pmamonov@gmail.com>

-- 
2.10.2


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-12-08  7:24 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-05  9:40 [RFC v2 0/8] MIPS: use kexec to load ELF linux images Antony Pavlov
2016-12-05  9:40 ` [RFC v2 1/8] MIPS: add virt_to_phys() and phys_to_virt() Antony Pavlov
2016-12-05  9:40 ` [RFC v2 2/8] MIPS: c-r4k: add support for secondary cache Antony Pavlov
2016-12-05  9:40 ` [RFC v2 3/8] resource: add create_resource() helper function Antony Pavlov
2016-12-05  9:40 ` [RFC v2 4/8] import initial kexec stuff Antony Pavlov
2016-12-07 19:47   ` Sascha Hauer
2016-12-08  7:24     ` Antony Pavlov
2016-12-05  9:40 ` [RFC v2 5/8] filetype: add ELF type Antony Pavlov
2016-12-05  9:40 ` [RFC v2 6/8] bootm: add kexec ELF support Antony Pavlov
2016-12-07 19:59   ` Sascha Hauer
2016-12-08  7:29     ` Antony Pavlov
2016-12-05  9:40 ` [RFC v2 7/8] MIPS: add kexec ELF loading support Antony Pavlov
2016-12-05  9:40 ` [RFC v2 8/8] MIPS: malta: enable kexec Antony Pavlov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox