On Fri, Oct 23, 2020 at 14:08:21 +0200, Ard Biesheuvel wrote: > This implements the LoadFile2 initrd loading protocol, which is > essentially a callback face into the bootloader to load the initrd > data into a caller provided buffer. This means the bootloader no > longer has to contain any policy regarding where to load the initrd > (which differs between architectures and kernel versions) and no > longer has to manipulate arch specific data structures such as DT > or struct bootparams to inform the OS where the initrd resides in > memory. > > Sample output from booting a recent Linux/arm64 kernel: > > grub> insmod part_msdos > grub> linux (hd0,msdos1)/Image > grub> initrd (hd0,msdos1)/initrd.img > grub> boot > EFI stub: Booting Linux Kernel... > EFI stub: EFI_RNG_PROTOCOL unavailable, KASLR will be disabled > EFI stub: Generating empty DTB > EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path > EFI stub: Exiting boot services and installing virtual address map... > [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x411fd070] I don't review enough grub code to be certain I've caught all aspects of style adherence, so with that in mind, for 1-2/4: Reviewed-by: Leif Lindholm <leif@xxxxxxxxxxxx> For 3-4/4, I did have some minor comments, but this is a really great feature and I would like to see it merged. / Leif > Cc: grub-devel@xxxxxxx > Cc: daniel.kiper@xxxxxxxxxx > Cc: leif@xxxxxxxxxxxx > > Ard Biesheuvel (4): > loader/linux: permit NULL argument for argv[] in grub_initrd_load() > efi: add definition of LoadFile2 protocol > efi: implemented LoadFile2 initr loading protocol for Linux > linux: ignore FDT unless we need to modify it > > grub-core/commands/efi/lsefi.c | 1 + > grub-core/loader/arm64/linux.c | 139 ++++++++++++++++++-- > grub-core/loader/efi/fdt.c | 7 +- > grub-core/loader/linux.c | 2 +- > include/grub/efi/api.h | 15 +++ > 5 files changed, 149 insertions(+), 15 deletions(-) > > -- > 2.17.1 >