[PATCH] distro_bootcmd: change the default dtb search path to include default kernel dtbs directory

Qu Wenruo quwenruo.btrfs at gmx.com
Fri Sep 17 13:42:29 CEST 2021



On 2021/9/17 19:34, Mark Kettenis wrote:
>> From: Qu Wenruo <wqu at suse.com>
>> Date: Fri, 17 Sep 2021 19:02:35 +0800
>>
>> When booting using U-boot -> systemd-boot (EFI payload) -> kernel on
>> RK3399, systemd-boot by some bug can't execute its "devicetree" key
>> correctly to load its proper dtb from files.
>>
>> In that case, it will use fallback dtb from U-boot, which can be
>> out-of-date, and on RK3399, even the latest U-boot contains out-of-date
>> dtb which can cause problems like invalid opp tables.
>>
>> And for systemd-boot, it doesn't provide any board specific dtb, but
>> completely relies on the EFI environment provided by U-boot, thus if we
>> can't find a good dtb, the fallback one will be used anyway.
>>
>> So this patch will workaround the problem by appending common linux dtbs
>> directory to the existing "efi_dtb_prefixes" so that for systemd-boot it
>> can use the existing fdt and boot properly.
>
> Why isn't the dtb installed in the standard location?

Isn't standard location "/dtbs" other than "/dtb"?

At least kernel puts its dtbs into "/dtbs" by default.

>
> Slowing the boot process down because distro's can't agree where to
> put the files is a bit lame...

Would it be better to make the search path configurable at config time?

By that each distro should config their dtbs search path, which could
further optimize the boot sequence by removing all other unnecessary
prefixes.

Thanks,
Qu

>
>> Signed-off-by: Qu Wenruo <wqu at suse.com>
>> ---
>>   include/config_distro_bootcmd.h | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
>> index 2627c2a6a541..4ec87483eb65 100644
>> --- a/include/config_distro_bootcmd.h
>> +++ b/include/config_distro_bootcmd.h
>> @@ -151,7 +151,7 @@
>>   		"load ${devtype} ${devnum}:${distro_bootpart} "           \
>>   			"${fdt_addr_r} ${prefix}${efi_fdtfile}\0"         \
>>   	\
>> -	"efi_dtb_prefixes=/ /dtb/ /dtb/current/\0"                        \
>> +	"efi_dtb_prefixes=/ /dtb/ /dtb/current/ /dtbs/ /dtbs/current/\0"  \
>>   	"scan_dev_for_efi="                                               \
>>   		"setenv efi_fdtfile ${fdtfile}; "                         \
>>   		BOOTENV_EFI_SET_FDTFILE_FALLBACK                          \
>> --
>> 2.33.0
>>
>>


More information about the U-Boot mailing list