linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: jamie@shareable.org (Jamie Lokier)
To: linux-arm-kernel@lists.infradead.org
Subject: Request review of device tree documentation
Date: Mon, 14 Jun 2010 17:02:01 +0100	[thread overview]
Message-ID: <20100614160201.GD9550@shareable.org> (raw)
In-Reply-To: <alpine.LFD.2.00.1006141044510.13427@xanadu.home>

Nicolas Pitre wrote:
> On Mon, 14 Jun 2010, David Gibson wrote:
> 
> > On Sun, Jun 13, 2010 at 11:02:15PM -0600, Grant Likely wrote:
> > [sni]
> > > > That's sort of a self-fulfilling prophecy. ?If the OS doesn't trust the
> > > > firmware, there is no pressure for the firmware to "get it right".
> > > 
> > > Firmware will not get it right.  Period.  There will always be
> > > something wrong.  It is never right on PCs.  It will never be right on
> > > the other architectures.
> > 
> > Yes, yes, yes.  And there is a great deal of empirical evidence to
> > back that assertion.
> > 
> > >  That goes for OSes too, but upgrading an OS
> > > isn't as risky as upgrading firmware.  That isn't to say that it can't
> > > be close, but every firmware feature that the OS depends on is a
> > > feature that could force a risky firmware upgrade when the bug in it
> > > is discovered.
> > 
> > Indeed.  In fact, the general rule of thumb is really "put as much as
> > possible into the most easily replaced layer of the stack".  This is,
> > incidentally, why I've always been dubious about simple firmwares
> > supplying a flattened device tree rather than including the device
> > tree template in the kernel, cuboot style.
> 
> The biggest advantage, IMHO, for adding DT to ARM, is actually to 
> decouple the hardware config information and the kernel.  If in the end 
> the DT has to be shipped in the kernel then we're losing all this 
> advantage over the current state of things on ARM which still works 
> pretty well otherwise.
> 
> In the best case, the simple firmware simply has to retrieve the 
> flattened device tree from flash, and pass it to the kernel just like 
> some anonymous blob.  And the simple firmware only needs to provide a 
> way for that DT blob to be updatable, like through an upload of a 
> replacement blob that was prepared offline.  Just like a ramdisk image 
> or the like.
> 
> That doesn't need to be fancier than that, and the goal of having the DT 
> data tied to the hardware instead of the kernel is achieved.

Imho that puts the DT in a similar category as initrd/initramfs, from
the bootloader's point of view.  It's another blob whose address is
passed to the kernel, just like initrd.

Some bootloaders can't update blobs independently for technical
reasons, or to be minimal.

A device I'm using does kernel updates by updating the whole romfs
boot image, which contains the kernel and other auxiliary blobs used
for booting (splash screen, early irq handlers etc.) as well as the
root filesystem.

It is done that way to pack everything together in the small flash,
and because the NOR flash eraseblocks are too large relative to the
whole flash size to use separate partitions for kernel, boot
filesystem and other blobs for booting.

Dedicating a 64kiB eraseblock out of 2MB just for a small DT would be
quite wasteful.  Dedicating two to make it powerfail-safe would be
even worse.

So requiring that a bootloader can update the DT _independently_ of
everything else is a bit much for some devices.

But requiring that it's generally treated like other separate blob,
i.e. in a similar way to initrd, and the kernel image itself, seems
not unreasonable.

Like initrd, some people will find they need to compile it in to the
kernel image to fit some bootloader they can't change, or daren't risk
changing in already rolled out devices that they want to update to a
DT-using kernel.

I won't be surprised if I see some vendor SDK containing a kernel
patch to early-parse the bootloader-supplied ROMFS image to extract
"devicetree.bin.gz" at some point :-)

We can discourage that sort of thing (but not prevent it) by ensuring
the open source bootloaders support a DT blob as easily as possible.

-- Jamie

  parent reply	other threads:[~2010-06-14 16:02 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <AANLkTilK4YkRMJqlcRDOAlGBzpdlZuSo9NF5NrRNocHT@mail.gmail.com>
     [not found] ` <33BD8E86-9397-432A-97BF-F154812C157B@digitaldans.com>
     [not found]   ` <AANLkTilv6TtPZs0DAwd8JlSV_J3VvMsvtVVOOeQauOIn@mail.gmail.com>
     [not found]     ` <4C13430B.5000907@firmworks.com>
     [not found]       ` <1276339529.1962.184.camel@pasglop>
     [not found]         ` <1276339684.1962.186.camel@pasglop>
     [not found]           ` <4C13B618.1030006@firmworks.com>
     [not found]             ` <1276383132.1962.195.camel@pasglop>
     [not found]               ` <AANLkTimRV8u3gDNCAIlROJoPcKs7jFwj2na3ZDFOg3O0@mail.gmail.com>
     [not found]                 ` <4C146F18.9030008@firmworks.com>
2010-06-14  5:02                   ` Request review of device tree documentation Grant Likely
2010-06-14 12:44                     ` David Gibson
2010-06-14 14:59                       ` Nicolas Pitre
2010-06-14 15:08                         ` Grant Likely
2010-06-14 16:02                         ` Jamie Lokier [this message]
2010-06-14 16:23                           ` Nicolas Pitre
2010-06-14 16:29                             ` Grant Likely
2010-06-14 16:28                           ` Grant Likely
2010-06-14 16:33                             ` Jamie Lokier
2010-06-14 16:58                           ` Mitch Bradley
2010-06-14 17:26                             ` Nicolas Pitre
2010-06-14 18:20                               ` Mitch Bradley
2010-06-14 19:40                                 ` Nicolas Pitre
2010-06-14 20:08                                   ` Mark Brown
2010-06-16  6:09                             ` Mike Rapoport
2010-06-16  6:13                               ` Mitch Bradley
2010-06-16  6:17                                 ` Mike Rapoport
2010-06-16  6:32                                   ` Mitch Bradley
2010-06-16  6:47                                     ` Mike Rapoport
2010-06-16  7:40                                       ` Mitch Bradley
2010-06-16  9:45                                         ` Vladimir Pantelic
2010-06-16 10:39                                         ` Mike Rapoport
2010-06-16 11:41                                           ` Jamie Lokier
2010-06-16 13:48                                             ` Jamie Bennett
2010-06-16 14:39                                           ` Nicolas Pitre
2010-06-16 17:43                                             ` Tim Bird
2010-06-17  6:45                                               ` Benjamin Zores
2010-06-16  6:52                                     ` M. Warner Losh
2010-06-18 22:12                                       ` Frank Rowand
2010-06-15  2:02                         ` David Gibson
2010-06-14 15:51                       ` M. Warner Losh
     [not found]                   ` <1276408773.1962.574.camel@pasglop>
2010-06-14  5:23                     ` Grant Likely
2010-06-14  7:38                       ` Russell King - ARM Linux
2010-06-14  7:45                         ` Mitch Bradley
2010-06-14  9:25                           ` Russell King - ARM Linux
2010-06-14  9:36                             ` Benjamin Herrenschmidt
2010-06-14  9:47                               ` Russell King - ARM Linux
2010-06-14 14:29                                 ` Jamie Lokier
2010-06-14 13:51                       ` Nicolas Pitre
2010-06-14 15:35                         ` Grant Likely
2010-06-14 15:58                           ` Nicolas Pitre
2010-06-14 16:16                             ` Grant Likely
     [not found]                     ` <4C147EA5.3060500@firmworks.com>
     [not found]                       ` <1276417792.1962.731.camel@pasglop>
2010-06-14  5:36                         ` Grant Likely
2010-06-14 20:00                           ` Ben Dooks
     [not found]                 ` <1276408087.1962.552.camel@pasglop>
2010-06-14  5:13                   ` Grant Likely
2010-06-14  6:09                     ` Benjamin Herrenschmidt
2010-06-14  6:17                       ` Mitch Bradley

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=20100614160201.GD9550@shareable.org \
    --to=jamie@shareable.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).