Hi Aristo,

On 1/13/26 07:09, Aristo Chen wrote:
> Hi E Shattow,
> 
> Aristo Chen <[email protected]> 於 2025年11月5日週三 下午8:21寫道:
>>
>> Hi E Shattow,
>>
>> E Shattow <[email protected]> 於 2025年9月24日 週三 下午9:31寫道:
>>>
>>> Hi Aristo,
>>>
>>> On 9/24/25 04:43, Nishanth Menon wrote:
>>>> On 06:37-20250924, Nishanth Menon wrote:
>>>>> On 10:59-20250914, Aristo Chen wrote:
>>>>>> This patch series enhances FIT image robustness by adding **memory
>>>>>> region overlap detection** to `mkimage` and fixing existing overlaps
>>>>>> in DTS files and `binman` tests.
>>>>
>>>> [...]
>>>>>>
>>>>>
>>>>> Looks like i see a build regression in linux-next after this series.
>>>>
>>>> I fat fingered that one.. sorry, I meant u-boot next.
>>>>
>>>>
>>>> Fails at commit 4d84fa1261eb, last pass was on commit d81c1118580f
>>>>
>>>>>
>>>>> https://gist.github.com/nmenon/b2fc9e7680cc296062c7dced94105f76
>>>>
>>>> I  believe there are outstanding comments on V1 that have'nt been
>>>> addressed either. Can we revert/drop this series for now while the
>>>> comments are addressed?
>>>>
>>>
>>> Similar to Nishanth, I am seeing a build regression, itb.map:
>>>
>>> ImagePos    Offset      Size  Name
>>> <none>      00000000  <none>    itb
>>> <none>      00000000  <none>    fit
>>> <none>      00000000  000c1698  uboot
>>> <none>      00000000  000c1698  u-boot-nodtb
>>> <none>      000c1698  00202128  opensbi
>>> <none>      00000000  00202128  opensbi
>>>
>>> Yields this error:
>>> ...
>>>  MKIMAGE fit-dtb.blob
>>> Warning: not able to get `load` of node 'fdt-1'
>>> Warning: not able to get `load` of node 'fdt-2'
>>> Warning: not able to get `load` of node 'fdt-3'
>>> Warning: not able to get `load` of node 'fdt-4'
>>> Warning: not able to get `load` of node 'fdt-5'
>>> Warning: not able to get `load` of node 'fdt-6'
>>> Warning: not able to get `load` of node 'fdt-7'
>>>   CAT     u-boot-fit-dtb.bin
>>> ...
>>>   MKIMAGE u-boot.img
>>> Warning: not able to get `load` of node 'fdt-1'
>>> Warning: not able to get `load` of node 'fdt-2'
>>> Warning: not able to get `load` of node 'fdt-3'
>>> Warning: not able to get `load` of node 'fdt-4'
>>> Warning: not able to get `load` of node 'fdt-5'
>>> Warning: not able to get `load` of node 'fdt-6'
>>> Warning: not able to get `load` of node 'fdt-7'
>>>   COPY    u-boot.dtb
>>>   MKIMAGE u-boot-dtb.img
>>> Warning: not able to get `load` of node 'fdt-1'
>>> Warning: not able to get `load` of node 'fdt-2'
>>> Warning: not able to get `load` of node 'fdt-3'
>>> Warning: not able to get `load` of node 'fdt-4'
>>> Warning: not able to get `load` of node 'fdt-5'
>>> Warning: not able to get `load` of node 'fdt-6'
>>> Warning: not able to get `load` of node 'fdt-7'
>>>   BINMAN  .binman_stamp
>>> Wrote map file './itb.map' to show errors
>>> binman: Error 1 running 'mkimage -t -F ./itb.fit.fit': Warning: not able
>>> to get `load` of node 'fdt-1'
>>> [Config: conf-1] Error: Overlap detected:
>>>   - uboot: [0x40200000 - 0x402c1698]
>>>   - opensbi: [0x40000000 - 0x40202128]
>>>
>>> make[1]: *** [/tmp/u-boot.2.git/Makefile:1339: .binman_stamp] Error 1
>>> make[1]: Leaving directory '/home/es/build/u-boot'
>>> make: *** [Makefile:198: sub-make] Error 2
>>> make: Leaving directory '/tmp/u-boot.2.git'
>>>
>>> If you would like to reproduce the issue, use config
>>> starfive_visionfive2_defconfig and pass to OPENSBI env variable the path
>>> of opensbi object 'fw_dynamic.bin' built using PLATFORM=generic, with
>>> the ordinary gcc riscv64 toolchain. The starfive visionfive2 board
>>> target in U-Boot supports multiple vendors and boards selected at
>>> runtime and is an example of a more complex FIT usage that you may be
>>> interested in for comparison and testing.
>>>
>>> Best regards,
>>>
>>> -E
>>
>> Sorry that I didn't noticed that my previous email sent to you was not
>> including other people
>>
>> Long story short, I am now able to reproduce the overlap issue that
>> you have encountered, and
>> I spent some time trying to understand what is opensbi, please correct
>> me if I am wrong
>>
>> AFAICT, there will be 2 types of firmware built, one is
>> `fw_payload.bin`, and the other is
>> `fw_dynamic.bin`
>> - fw_payload.bin: contains the next-stage binary, so the file size
>> will be bigger
>> - fw_dynamic.bin: provides information about the next boot stage at
>> runtime, so the size is smaller
>>
>> and here are the size of these 2 files built in my environment
>> ```
>> -rw-rw-r-- 1 ubuntu ubuntu  273048 Oct 25 14:49 fw_dynamic.bin
>> -rw-rw-r-- 1 ubuntu ubuntu 2105656 Oct 25 14:49 fw_payload.bin
>> ```
>>
>> When using my overlap checking mechanism, and passing the
>> fw_dynamic.bin to build U-Boot,
>> there is no overlap issue. However, when using fw_payload.bin, there
>> will be an overlap issue.
>>
>> AFAICT, the SPL will load the opensbi firmware(assuming fw_payload.bin
>> here) first, then load
>> U-Boot into memory, and then jump to opensbi firmware, so I was a bit
>> confused why the
>> overlapped opensbi still works?
>>
>> I will find some time to figure out how the whole loading/booting
>> process looks like, but it would
>> be greatly appreciated if you can share some insight, thanks!
> 
> I finally had some time to revisit this and managed to get a VisionFive2
> board for local testing.
> 
> While trying to make it bootable I noticed the following docs:
>   - 
> https://docs.u-boot.org/en/latest/board/starfive/visionfive2.html#second-stage-bootloader-opensbi-fw-dynamic-bin-u-boot-main
>   - https://wiki.gentoo.org/wiki/StarFive_VisionFive_2#Building_OpenSBI
> 
> Both appear to recommend using OpenSBI’s fw_dynamic.bin when building
> U‑Boot. I couldn’t find any guidance on using fw_payload.bin together
> with U‑Boot, which made me wonder why fw_payload.bin was used in your
> earlier report.
> 

Likely I mixed up the filenames when writing in conversation, as I did
when writing on the opensbi mailing list about a dependency tracking bug
in opensbi build system:

https://lore.kernel.org/opensbi/[email protected]/

and

https://lore.kernel.org/opensbi/[email protected]/

...which is clearly a mistake to write "OPENSBI=/path/to/fw_payload.bin"
when it should instead be "OPENSBI=/path/to/fw_dynamic.bin",
acknowledged in the follow-up message:

https://lore.kernel.org/opensbi/[email protected]/

> Could you clarify whether there is documentation (or a specific
> requirement) that calls for fw_payload.bin in this flow? If the intended
> path is fw_dynamic.bin, then the overlap issue disappears for me
> 

For the VisionFive2 and derivative boards, I intended to refer to
fw_dynamic.bin only. If I mention otherwise it was in error or for not
knowing what I'm looking at and reporting more information than
required. There are RISC-V boards not related to VisionFive2 or its
StarFive JH-7110 SoC that do use the fw_payload.bin approach but I think
I just didn't notice the difference when transcribing to e-mail.

> Thanks for your help and guidance.
>>
>> Best regards,
>> Aristo
> 
> Best regards,
> Aristo

Thanks very much for the follow-up,

-E

Reply via email to