On Sun, Oct 22, 2023 at 10:47:33AM +0200, Heinrich Schuchardt wrote: > Forward and backward compatibility of Linux kernel device-trees is > sometimes missing. One solution approach is to load a kernel specific > device-tree. This can either be done via a U-Boot scripts (like the one > generated by Debian package flash-kernel or by a boot loader like GRUB. > The boot loader approach currently requires to know the device-tree name > before first boot which makes it unusable for generic images. > > Expose the device-tree file name as EFI variable FdtFile. > This will allow bootloaders to load a kernel specific device-tree. > > The variable will not be exposed on ACPI based systems or if the > environment variable fdtfile is not defined. > > Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com> > --- > v3: > Add documentation > v2: > Use a unique GUID to enable future U-Boot independent > standardization. > Do not try to add the variable on ACPI based systems. > --- > doc/develop/uefi/uefi.rst | 17 +++++++++++++++++ > include/efi_loader.h | 5 +++++ > lib/efi_loader/efi_setup.c | 30 ++++++++++++++++++++++++++++++ > 3 files changed, 52 insertions(+) > > diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst > index fb16ac743a..a81d09ae81 100644 > --- a/doc/develop/uefi/uefi.rst > +++ b/doc/develop/uefi/uefi.rst > @@ -916,6 +916,23 @@ So our final format of the FilePathList[] is:: > > Loaded image - end node (0xff) - VenMedia - initrd_1 - [end node (0x01) > - initrd_n ...] - end node (0xff) > > +EFI variable FdtFile > +~~~~~~~~~~~~~~~~~~~~ > + > +Ideally U-Boot would always expose a device-tree that can be used for booting > +any operating systems. Unfortunately operating systems like Linux sometimes > +break forward and backward compatibility. In this case there is a need to > load > +an operating system version specific device-tree. > + > +U-Boot has an environment variable fdtfile identifying the device-tree file > to > +load. The content of this variable is exposed as EFI variable Fdtfile, vendor > +GUID d45dde69-3bd6-40e0-90d5-6b606aa57730. It contains the device-tree path > +name as a NUL terminated ASCII string. > + > +On 32bit ARM this is currently only a file name, e.g. 'imx6dl-wandboard.dtb'. > +On other architectures the file name is preceded by the vendor directory, > e.g. > +'rockchip/rk3326-odroid-go2.dtb'.
The Linux Kernel has split 32bit ARM up by directory now, too. -- Tom
signature.asc
Description: PGP signature