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

Simon Glass
2014-12-01T20:17:20Z

Hi Stephen,

On 1 December 2014 at 11:41, Stephen Warren <swarren@wwwdotorg.org> wrote:
> 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.

OK so I wonder if this problem would go away if Barebox supported FIT.
I haven't played with Barebox but could perhaps take a look.

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

My use case is to have one or more kernels, lots of device trees and
be able to boot on any arch. I think that is the same for you, but in
your case you rely on a filesystem to provide a large number of FDTs.
This means that we can't provide a kernel release as a single file,
nor can we support verified boot. With FIT we can support these.

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

OK I remember your patches now, sounds good.

Let me know if there is some other blocker (besides Barebox) to
supporting FIT more widely for kernel + device tree distribution.

Regards,
Simon