public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Alex G. <mr.nuke.me@gmail.com>
To: u-boot@lists.denx.de
Subject: Getting rid of falcon mode
Date: Tue, 13 Apr 2021 09:08:01 -0500	[thread overview]
Message-ID: <7c3b0754-9886-684f-c949-707c8800a802@gmail.com> (raw)
In-Reply-To: <20210413085629.kjqnb5l3o5ch673w@gilmour>

Hi Maxime,

On 4/13/21 3:56 AM, Maxime Ripard wrote:
> Hi,
> 
> On Mon, Apr 12, 2021 at 04:32:49PM -0500, Alex G. wrote:
>> ## Introduction
>>
>> Today we use "falcon mode" to mean "boot linux straight from SPL". This
>> designation makes sense, since falcons "fly at high speed and change
>> direction rapidly" according to Wikipedia.
>>
>> The way we implement falcon mode is to reserve two areas of storage:
>>    * kernel area/partition
>>    * dtb area/partition
>> By using some "special cases", and "spl export", SPL can more or less figure
>> out how to skip u-boot.
>>
>>
>> ## The plot twist
>>
>> People familiar with FIT, will have recognized that the above is achievable
>> with a very basic FIT image. With some advantages:
>>
>>      - No "special cases" in SPL code
>>      - Signed kernel images
>>      - Signed kernel devicetree
>>      - Devicetree overlays
>>      - Automatic selection of correct devicetree
>>
>>
>> ## The problems
>>
>> The advantages of FIT are not obvious by looking at SPL code. A noticeable
>> amount of SPL code is hidden under #ifdef CONFIG_SPL_OS_BOOT, leading one to
>> believe that SPL_OS_BOOT is very important. It must be since it takes up so
>> much code.
>>
>> Enabling falcon mode is not well documented, and requires a lot of trial and
>> error. I've had to define 7 macros, and one new function to get it working
>> on my board -- and vividly remember the grief. This is an antiquated way of
>> doing things, and completely ignores the u-boot devicetree -- we could just
>> as well have defined those seven values in the dtb.
>>
>> SPL assumes that it must load u-boot, unless in instances under
>> CONFIG_SPL_OS_BOOT. This has cause me a huge amount of grief and confusion
>> over the past several months. I have no less than three patch series trying
>> to address shortfalls there. It's awful.
>>
>>
>> ## The proposal
>>
>> I propose we drop falcon mode support for legacy images.
>>
>>    - Drop CONFIG_SPL_OS_BOOT. Support for this is implied by SPL_FIT
>>    - Drop the "dtb area/partition". The dtb is derived from the FIT
>>    - Drop "spl export"
>>
>>
>> How do we deal with devicetrees in the FIT then? The options are to use a
>> modified devicetree which has the desired "/chosen" node, or use DTB
>> overlays.
>>
>> What are the reasons why we shouldn't go this route?
> 
> I can see at least two, that are mainly due to a FIT image being
> essentially a compiled device tree:
> 
>    - Not all platforms have enough head-space in their SPL to have libfdt
>      in addition to what is already there.

Do we know which platforms fall in this category? We can investigate if 
it might be possible to disable just enough of the legacy support to 
make room for libfdt.


>    - Parsing a DT is fairly slow too. Last time I checked booting a FIT
>      image took around 150ms more than a legacy image on a Cortex-A7. If
>      one is using the Falcon mode in the first place chances are it's to
>      improve the boot-time, so this seems like a step backward.

I'm skeptical of the 150ms delta, as I also did heavy measurements on 
this a few months back. But maybe there's something that causes certain 
platforms to bog down, (caching issues ?).

I've used grabserial (e.g. "grabserial -d /dev/ttyACM0 -b 2000000 
-m"U-Boot SPL" -t") to time the boot. If you have similar logs, maybe 
there's something there that tells us why parsing the FIT bogs down.

Alex

  reply	other threads:[~2021-04-13 14:08 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-12 21:32 Getting rid of falcon mode Alex G.
2021-04-12 22:21 ` Tom Rini
2021-04-13  8:56 ` Maxime Ripard
2021-04-13 14:08   ` Alex G. [this message]
2021-04-13 14:13     ` Tom Rini
2021-04-13 14:28       ` Maxime Ripard
2021-04-13 14:26     ` Maxime Ripard
2021-04-14 19:37 ` Simon Glass
2021-04-14 20:05   ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7c3b0754-9886-684f-c949-707c8800a802@gmail.com \
    --to=mr.nuke.me@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox