public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] efi_loader: Add distro boot script for removable media
Date: Wed, 13 Apr 2016 20:47:41 +0200	[thread overview]
Message-ID: <570E944D.1050507@suse.de> (raw)
In-Reply-To: <570E9091.7060203@wwwdotorg.org>



On 13.04.16 20:31, Stephen Warren wrote:
> On 04/13/2016 12:24 PM, Alexander Graf wrote:
>>
>>
>>> 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.
>>
>> It depends on the camp you're coming from ;). If you come from the
>> traditional server camp that used to work with server class ppc in the
>> past, then device tree by firmware is a pretty natural concept. Also,
>> all ARM servers available today have a stable dtb ABI, because they all
>> provide dtb via uEFI.
>>
>> In the embedded world this doesn't hold true quite as well
>> unfortunately. People only realize that their device trees are
>> incomplete / wrong when they write the respective drivers. So there we
>> see much more churn.
>>
>> Over time however as a platform ages, the "embedded" style systems
>> should end up with stable dtbs as well, at which point having them
>> provided by U-Boot straight away is a nice compromise.
> 
> Yes, unfortunately DTB ABI or completeness isn't something that many
> downstreams think about. I'm not convinced that will change much at the
> time boards (or drivers for specific HW modules) first appear upstream.
> You're right that boards that have been around a while will tend to
> stabilize.
> 
> For embedded targets, given that we already support loading DTBs
> separately, I'm not sure I would want to change away from that. The
> system works and people are familiar with it. Switching to a different
> scheme means everyone has to adapt. Still, it might work out well on a
> case-by-case basis.

I've seen it work pretty well on server class ARM systems, so I'm
convinced the model can work. If people care :).

The interesting bit is that in the "real" embedded case, the model would
work as well, because U-Boot would get updated in conjunction with the
kernel, so they'd be in sync.

But what I'm aiming for is a waterfall model. Basically allow people to
provide the device tree using

  * internal U-Boot (either its own or a separate dtb)
  * distro override
  * grub override

Each come with their own pitfalls. Grub override is the worst of the
bunch, because you're losing all of the device tree patching for memory
size, simplefb, secondary entry points, etc. There's simply no efi hook
for it and I'm not sure it's worth implementing our own protocol just
for this use case.

But nobody forces you to use any of these, in any model. If U-Boot
provides a dtb, you are free to use it or override it. If you provide a
dtb at the known-good location, you can still override it using grub
overrides.

In fact, if you don't want to you don't even have to use the distro
bootcmd. You can create your own bootcmd that does

  load mmc 0 $fdt_addr_r my_awesome.dtb ;\
  load mmc 0 $kernel_addr_r some/random/path/grub2.efi ;\
  bootefi $kernel_addr_r

and it would work just like you would expect it to work. The point about
these defaults is that we have some path for users to not have to know
these details :). I think one of U-Boot's great strengths is its
modularity where you can do pretty much anything you want. But I guess
I'm preaching to the choir ;).


Alex

  reply	other threads:[~2016-04-13 18:47 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-13 17:54 [U-Boot] efi_loader: Add distro boot script for removable media Stephen Warren
2016-04-13 18:24 ` Alexander Graf
2016-04-13 18:31   ` Stephen Warren
2016-04-13 18:47     ` Alexander Graf [this message]
2016-04-13 18:54       ` Andreas Färber
2016-04-13 19:01         ` Alexander Graf

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=570E944D.1050507@suse.de \
    --to=agraf@suse.de \
    --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