[U-Boot] [PATCH v3 3/4] tegra: config: Enable FIT and device tree for all boards

Stephen Warren
2014-12-01T18:41:48Z

On 11/25/2014 10:44 AM, Simon Glass wrote:
> 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 believe that Barebox supports extlinux.conf too.

> 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.

It doesn't. My point is that it's unlikely people will want FIT support
except in certain specific cases (such as ChromeOS compatibility), and
we shouldn't enable it except where there's a demonstrable use-case, so
we don't confuse people with non-standard options and accidentally lead
them down the wrong path.

...
>> Example /boot/extlinux.conf (for media-based booting) or
>> pxelinux.cfg/default (for network booting via syslinux command):
...
> 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.

extlinux.conf can specify a particular DTB filename if it wants.
Alternatively, it can specify a directory containing a set of DTBs, and
the bootloader must select which DTB to load.

If $fdtfile is set in U-Boot's environment, that file is used.

Otherwise, the U-Boot syslinux code uses some other environment
variables to calculate a default DTB filename; ${soc}-${board}.dtb.