On Wed Apr 30, 2025 at 7:46 PM IST, Tom Rini wrote:
> On Wed, Apr 30, 2025 at 07:27:50PM +0530, Anshul Dalal wrote:
>
>> As discussed here[1], the go command causes undefined behavior when used
>> for running custom OSes since the icache might hold outdated data. OSes
>> usually also expect the MMU to be disabled upon execution.
>> 
>> Therefore this patch adds a call to cleanup_before_linux before we jump
>> to the loaded program/os which disables both the caches and the MMU.
>> This makes the go command's behavior consistent with riscv platforms.
>> 
>> NOTE: This might cause regressions with users expecting a configured MMU
>> but I'm unsure if it's a supported use case for the go command anyway.
>> 
>> [1]: https://lore.kernel.org/u-boot/d9dxl95mtq8i.3euy0c6m2l...@ti.com/
>> 
>> Signed-off-by: Anshul Dalal <ansh...@ti.com>
>
> This is the inverse of what needs to be done, sorry. RISC-V shouldn't be
> doing this type of cleanup. I know it sounds reductive but "go means
> go". We have all of the other bootX commands for "prepare the system and
> boot the thing at $address".

Well, "go means go" implies we jump to the necessary DDR address and
start executing. But with caches enabled, it fails in cases where we
have that specific address in the icache already. In that case the
execution starts from whatever's stored in the icache and not really
DDR.

Reply via email to