
Hi Stephen,
On 25 November 2014 at 09:23, Stephen Warren swarren@wwwdotorg.org wrote:
On 11/24/2014 04:49 PM, Simon Glass wrote:
Hi Stephen,
On 24 November 2014 at 10:11, Stephen Warren swarren@wwwdotorg.org wrote:
On 11/23/2014 09:12 AM, Simon Glass wrote:
Modern kernels require a device tree to boot.
True.
Enable FIT support to permit
booting these images, rather than just legacy images.
I don't understand this? Modern kernels boot perfectly well without FIT support. U-Boot supports the kernel's standard separate DTB and zImage file formats just fine.
To be honest, I'd strongly prefer not to enable support for non-universal (bootloader-specific) formats such as FIT.
In U-Boot? FIT is U-Boot's standard format
That's rather my point: FIT is *U-Boot's* standard format, not a global standard format.
I want to strongly guide anyone using Tegra towards globally standard formats, not intimate that they should be using bootloader-specific formats.
zImage (without appended DTB) is a standard Linux format that all booatloaders should support.
Raw DTB in a separate file (or perhaps provided by earlier firmware directly in RAM/ROM) is a standard Linux format that all bootloaders should support.
extlinux.conf is something that all bootloaders should support.
Linux distros that install binaries or config files in those standard formats should expect them to work with any bootloader, on any board. This way, distros won't have to write explicit support for any board; they'll just install standard files and everything will just work anywhere.
Just so I am clear, on ARM what is the list of bootloaders that you are concerned with? FIT is actually not a difficult thing to add to a boot loader. Presumably they all support libfdt, so it is just a case of plumbing in the FIT access stuff.
I'm really not keen on this lowest-common-denominator approach, it's just a sad situation. Also I don't see why extlinux.conf should preclude people using FIT if they want to.
and avoids all the mess that is zImage with a single attached DTB, etc.
Yes, we should avoid appended DTB where possible. However, there's no need to use appended DTB even when not using FIT; just put the zImage and DTB in separate files. To load them, either use a simple extlinux.conf config file, or a set of U-Boot commands to load each file; see https://github.com/NVIDIA/tegra-uboot-scripts for something that'll generates some examples.
Example /boot/extlinux.conf (for media-based booting) or pxelinux.cfg/default (for network booting via syslinux command):
TIMEOUT 100
MENU TITLE TFTP boot options
LABEL jetson-tk1-emmc MENU LABEL ../zImage root on Jetson TK1 eMMC LINUX ../zImage FDTDIR ../ APPEND console=ttyS0,115200n8 console=tty1 loglevel=8 rootwait rw earlyprintk root=/dev/mmcblk0p1 #root=UUID=8eac677f-8ea8-4270-8479-d5ddbb797450
LABEL sdcard MENU LABEL ../zImage, root on 2GB sdcard LINUX ../zImage FDTDIR ../ APPEND console=ttyS0,115200n8 console=tty1 loglevel=8 rootwait rw earlyprintk root=PARTUUID=b2f82cda-2535-4779-b467-094a210fbae7
LABEL venice2-emmc MENU LABEL ../zImage root on Venice2 eMMC LINUX ../zImage FDTDIR ../ APPEND console=ttyS0,115200n8 console=tty1 loglevel=8 rootwait rw earlyprintk root=PARTUUID=5f71e06f-be08-48ed-b1ef-ee4800cc860f ...
Sounds good. I guess if the zImage were an image.fit then this would still work on U-Boot. We could even enable verified boot!
How does U-Boot select which device tree to pass to the kernel with the scheme above? We shouldn't rely on the user, right? With FIT we use CONFIG_FIT_BEST_MATCH.
This allows booting of Chrome OS kernels, among other things.
This might be a reasonable justification to support FIT. However, it'd be best to enable FIT support only on boards that are actually supported by ChromeOS, so as not to pollute other boards' configuration.
I feel that FIT is a pretty core feature for U-Boot. Are you worried about the space?
I'm worried about guiding people towards non-standard file formats and protocols that lock people into a particular boot-loader.
For use-cases where it makes sense, I think it's fine to enable FIT. As a general feature across all boards, I would strongly prefer not to. One use-case that makes sense might be to boot ChromeOS. Of course, that's only applicable to boards that ChromeOS (or ChromiumOS) supports, and hence FIT should only be enabled in those boards' config files, not globally.
Without it we wouldn't be able to boot a kernel. Still I don't see why enabling the feature is going to break anything. It's like bike owners wanting to ban cars.
Regards, Simon