
I've spotted a couple of problems in 74522c898b35 "efi_loader: Add distro boot script for removable media". These help explain something I found strange in the commit description of the recently sent patch "jetson-tk1: Set fdtfile environment variable"; "The 4.5.0 kernel cannot cope with U-Boot's internal device tree".
"load_efi_dtb=" \ "load ${devtype} ${devnum}:${distro_bootpart} " \ "${fdt_addr_r} ${prefix}${fdtfile}; " \ "fdt addr ${fdt_addr_r}\0" \ \
The "fdt addr" command shouldn't be there. That affects the DT that U-Boot's internal commands operate on internally. That is entirely unrelated to the the DT that is passed to the Linux kernel. Instead, the EFI code should pass the DTB at ${kernel_addr_r} to the kernel, just like all other boot mechanisms do.
If by some chance U-Boot is configured by DTB and that DTB is fully suitable to pass to the Linux kernel, then the board-specific code can arrange for ${kernel_addr_r} to point at that same DTB, thus removing the need to load one. However, that's unlikely to happen too often at present; the most complete DTBs are housed in the Linux kernel source tree, and DTB ABI still isn't really a thing, so in practice one mostly wants to load a DTB that was built as part of the kernel being booted, and hence U-Boot's DTB isn't relevant.