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

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

 



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 ?
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.

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.

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

_______________________________________________
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