[RFC 1/1] board: sifive: unmatched: use zero copy for initrd

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Jul 19 23:52:09 CEST 2021



On 19.07.21 23:38, Heinrich Schuchardt wrote:
> Booting Ubuntu Impish showed the following output:
>
>      relocaddr   = 0x00000000fff60000
>
>      Loading Ramdisk to fa118000, end fffff19d ...
>
> The initrd is overwriting the U-Boot binary. Booting fails.
>
> There is no need to copy the initrd from $ramdisk_addr_r.
> Set init_high = ~0UL to use zero copy.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> Generally copying to another memory location than $ramdisk_addr_r provides
> no benefit whatsoever.
>
> But we still should find out why the initrd relocation fails so badly.
> ---
>   include/configs/sifive-unmatched.h | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/include/configs/sifive-unmatched.h b/include/configs/sifive-unmatched.h
> index d63a5f62fb..8dcfffedbe 100644
> --- a/include/configs/sifive-unmatched.h
> +++ b/include/configs/sifive-unmatched.h
> @@ -67,6 +67,7 @@
>   	"scriptaddr=0x88100000\0" \
>   	"pxefile_addr_r=0x88200000\0" \
>   	"ramdisk_addr_r=0x88300000\0" \
> +	"initrd_high=0xffffffffffffffff\0" \
>   	"kernel_comp_addr_r=0x90000000\0" \

Tom remarked that kernel_comp_addr_r is poorly chosen as it will overlap
with initrd if initrd exceeds 125 MiB. Current RISC-V Linux thinks
initrd should fit into the first 128 MiB of RAM but that is an
unnecessary restriction in Linux.

Best regards

Heinrich

>   	"kernel_comp_size=0x4000000\0" \
>   	"type_guid_gpt_loader1=" TYPE_GUID_LOADER1 "\0" \
> --
> 2.30.2
>


More information about the U-Boot mailing list