Re: [PATCH v2 0/6] elf: add better bootm support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 23 Apr 2020 13:06:17 +0200 (CEST)
Clément Leger <cleger@xxxxxxxxx> wrote:

> Hi Antony,
> 
> ----- On 23 Apr, 2020, at 12:20, Antony Pavlov antonynpavlov@xxxxxxxxx wrote:
> 
> > On Thu, 23 Apr 2020 10:17:05 +0200
> > Clement Leger <cleger@xxxxxxxxx> wrote:
> > 
> > Hi, Clement
> > 
> > Just FYI. On MIPS barebox I use out-of-tree kexec-based ELF loader.
> > 
> > This efforts started in 2012 (sic!):
> > http://lists.infradead.org/pipermail/barebox/2012-December/011771.html
> > 
> > Alas! kexec patches are not mainlined still.
> > 
> > public kexec patches are available in my github repo, e.g.
> > https://github.com/frantony/barebox/commits/20170319.mips-malta-elf-linux
> > 
> > If your are interested in using kexec-style ELF loading I can prepare
> > patches on top of latest barebox master.
> 
> If I understand correctly, the main advantage is to be able to load some code
> over the currently running code by using some sort of "relocation" right ?

Yes, you are right.

> Currently, on KVX, we load Linux in the beginning of the DDR and barebox is
> at DDR base + 256Mo so we don't have overlapping. But I bet that if we
> had that it would be useful.

On MIPS the situation is just the same: on start barebox relocates itself
to the top of memory (thank to 2019 Oleksij's patchseries)
so linux kernel and barebox overlaping is unlikely. So kexec-style ELF
loading was actual on MIPS before 2019.


> Anyway, even if we don't need it right now, that's a really nice feature !
> 
> From what I see from your commit, I think a part of it could be integrated in
> the existing  elf parser (in elf_request_region) and add the segment
> information in elf_section struct (the name is not really meaningful
> since it stores the elf segments :D). And then a bootm option would allow
> setting an "offset" at which will be loaded the elf waiting to be relocated
> and then call the arch assembly code to do the relocation and boot ?
> 
> BTW, it makes me realize that currently, the elf is loaded when doing the
> elf_open and not it would probably be better to do it in bootm_load_os as
> for other file format. This would allow to open the elf file only in the
> first time and load it later and could probably help you to integrate
> kexec (ie load elf file only) and then do some kexec magic with the elf
> struct.
> Tell me if you think other improvements can be made.

First of all I have to check your v3 patchseries on MIPS.
The main problem of my kexec elf load patchseries that it was tested only on MIPS.




> Regards,
> 
> Clément
> 
> > 
> >> Currently, when booting an elf file using "bootm /dev/mtdx", bootm will
> >> simply pass the file to the bootm and the read done on it will read the
> >> entire flash partition. This series starts by some cleanup and then add an
> >> elf_open function to load the elf file size only based on the elf header.
> >> A special handling for the elf file is also added in bootm data to allow
> >> using directly the elf file structure. Finally the mips bootm is modified
> >> to use bootm elf loading capability.
> >> 
> >> Changes v1 -> v2
> >>  - Add BOOTM_ELF config to select elf support and add checks in code
> >>  - Add an elf_get_mem_size function to avoid computing elf size in bootm.c
> >>  - Use xmalloc and read_full in elf_open instead of xzalloc/read
> >>  - Fix data->elf NULL reset
> >>  - Remove elf struct entirely from mips bootm code
> >> 
> >> Clement Leger (6):
> >>   common: elf: add computation of elf boundaries
> >>   common: elf: fix warning on 32 bits architectures
> >>   common: elf: split init to be reused from other function
> >>   common: elf: add elf_open and elf_close
> >>   common: bootm: add support for elf file loading
> >>   mips: lib: bootm: use bootm elf loading capabilities
> >> 
> >>  arch/mips/lib/bootm.c |  27 +++--------
> >>  common/Kconfig        |   8 ++++
> >>  common/bootm.c        |  30 ++++++++++++
> >>  common/elf.c          | 107 ++++++++++++++++++++++++++++++++++++++++--
> >>  include/bootm.h       |   3 ++
> >>  include/elf.h         |  14 ++++++
> >>  6 files changed, 164 insertions(+), 25 deletions(-)
> >> 
> >> --
> >> 2.17.1
> >> 
> >> 
> >> _______________________________________________
> >> barebox mailing list
> >> barebox@xxxxxxxxxxxxxxxxxxx
> >> http://lists.infradead.org/mailman/listinfo/barebox
> > 
> > 
> > --
> > Best regards,
> >   Antony Pavlov


-- 
Best regards,
  Antony Pavlov

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




[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux