[RFC] Expected behavior of the go command
Kumar, Udit
u-kumar1 at ti.com
Fri Apr 25 14:43:06 CEST 2025
Hi Ahmad
On 4/25/2025 4:28 PM, Ahmad Fatoum wrote:
> Hi Udit,
>
> On 4/25/25 12:35, Kumar, Udit wrote:
>> On 4/25/2025 11:09 AM, Ahmad Fatoum wrote:
>>> Thinking about it, I am wondering whether U-Boot go is inherently broken,
>>> even for the jump-table use case, if caches are enabled:
>> Correct, this is what I think . Before jumping to new program go command
>> should make sure
>>
>> things are in correct order by cache flush. Kind of below
>>
>> diff --git a/cmd/boot.c b/cmd/boot.c
>> index 23496cafdf5..e6bb1d94a1c 100644
>> --- a/cmd/boot.c
>> +++ b/cmd/boot.c
>> @@ -18,6 +18,7 @@ __attribute__((weak))
>> unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc,
>> char *const argv[])
>> {
>> + flush_cache(...)
> yes, even with MMU left enabled, it looks like there should be an
> I-Cache invalidate and D-Cache flush/clean here[1].
Yes, correct . This should be extended with above
>
>> I see even ARM64, few board choose to over-ride default option (board/
>> xilinx/versal/board.c)
>>
>> do_go_exec does dcache_disable()
> I think __weak is a fundamental mistake and upstream boards abusing it
> to not have to fix things generally shows that.
>
>> Sorry I was not clear in previous message,
>>
>> Here OS take care of caching , irrespective of how boot is done through fit
> Yes, but with the assumption that MMU was disabled at start.
>
>> or kind of efi or other method.
> Interestingly, with EFI MMU should be left enabled. Linux even
> warns about the case that MMU was disabled when entering the stub.
>
> Cheers,
> Ahmad
>
More information about the U-Boot
mailing list