[PATCH 1/1] docs/firmware: Update FW_JUMP documentation
Jessica Clarke
jrtc27 at jrtc27.com
Wed Sep 14 05:15:59 PDT 2022
On 14 Sept 2022, at 11:11, Andrew Jones <ajones at ventanamicro.com> wrote:
>
> On Tue, Sep 13, 2022 at 01:46:05PM +0800, Nylon Chen wrote:
>> From: "Nylon.Chen" <nylon.chen at sifive.com>
>>
>> Add a tip for OpenSBI's Jump mode.
>>
>> help user avoids the kernel overwritten.
>>
>> Signed-off-by: Nylon Chen <nylon.chen at sifive.com>
>> Signed-off-by: Nylon.Chen <nylon.chen at sifive.com>
>> ---
>> docs/firmware/fw_jump.md | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>>
>> diff --git a/docs/firmware/fw_jump.md b/docs/firmware/fw_jump.md
>> index 35a4301..c20d722 100644
>> --- a/docs/firmware/fw_jump.md
>> +++ b/docs/firmware/fw_jump.md
>> @@ -40,6 +40,24 @@ follows:
>> the booting stage following the OpenSBI firmware. If this option is not
>> provided, then the OpenSBI firmware will pass the FDT address passed by the
>> previous booting stage to the next booting stage.
>> +
>> + If your *PLATFORM=generic* and your *FW_JUMP_FDT_ADDR* is default, you must check
>> + your Linux size because Linux will be overwritten in OpneSBI's FDT copy loop.
>> + You can use the following method.
>
> Ensure FW_JUMP_FDT_ADDR is set high enough to avoid overwriting the
> kernel. The following method may be used to check if the default
> (0x2200000) is sufficient:
>
>> +
>> + ```
>> + LAST_SECTION=`${CROSS_COMPILE}objdump -h vmlinux | grep "00*" | awk '{print $5,$3}'\
>> + | sort -rfu | head -n 1 | awk '{split($0,addr," ");print addr[1]}'` \
>> + && LAST_SECTION_SIZE=`${CROSS_COMPILE}objdump -h vmlinux | grep "00*" |awk '{print $5,$3}'\
>> + | sort -rfu | head -n 1 | awk '{split($0,addr,"")}'` \
>> + && OFFSET_ADDR=$(( 16#$LAST_SECTION_SIZE + 16#$LAST_SECTION)) \
>> + && printf "The LMA of the last section of the Kernel is 0x%X\n" ${OFFSET_ADDR}
>> + ```
>
> Once we've decided to use awk, we might as well use all of it
>
> ${CROSS_COMPILE}objdump -h $KERNEL_ELF | sort -k 5,5 |
> awk '/^ +[0-9]+ / \
> { s = strtonum("0x"$3) + strtonum("0x"$5) } \
> END { \
> if (s > 0x2200000) { \
> print "fdt overlaps kernel, increase FW_JUMP_FDT_ADDR"; \
> exit(1) \
> } \
> }'
strtonum is a GNU awk extension that isn’t in One True Awk as used by
FreeBSD and macOS.
Jess
> Thanks,
> drew
>
>> +
>> + If the result is bigger than the default of FW_JUMP_FDT_ADDR(0x2200000),
>> + you must change it to avoid the problem of being overwritten.
>> +
>> +
>>
>> *FW_JUMP* Example
>> -----------------
>> --
>> 2.36.1
>>
>>
>> --
>> opensbi mailing list
>> opensbi at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/opensbi
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
More information about the opensbi
mailing list