From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: RFC: ARM Boot standard for passing device tree blob
Date: Thu, 25 Mar 2010 21:04:09 +0000 [thread overview]
Message-ID: <20100325210409.GH24984@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <fa686aa41003240811l6f40c8cfs6fdad496facdc089@mail.gmail.com>
On Wed, Mar 24, 2010 at 09:11:56AM -0600, Grant Likely wrote:
> Hi all,
>
> Since work is being done to add ARM Flattened Device Tree support to
> both Linux and FreeBSD, I think it would be worth while to agree on a
> common boot interface for passing a device tree blob from firmware to
> the kernel (or in the case of kexec, from the old to new kernels).
> I've drafted up something quickly on fdt.secretlab.ca. The page can
> be found here:
>
> http://fdt.secretlab.ca/Boot_Environment#ARM
>
> Feel free to modify the draft on the wiki if you notice any missing
> details. I've also posted the current text below so it is easy to
> review and comment on.
>
> (btw, the wiki at fdt.secretlab.ca should be moving to devicetree.org
> in the near future, but I'll keep the old domain name around.
> devicetree.org will be used to document new device tree bindings in an
> OS-agnostic location.)
>
>
> == ARM ==
> See Documentation/arm/Booting and arch/arm/include/asm/setup.h in the
> Linux kernel source tree for background information. Some of the
> content of this section is extracted from those files.
>
> '''Draft'''
>
> ===Required System State===
> *Quiesce all DMA
> *CPU register contents
> **r0 = 0
> **r1 = Linux machine number (as defined in the ARM Linux machine database) or 0
0 is a valid machine number. What is your purpose of passing 0?
> **r2 = physical address of tagged parameter list in system RAM
> *IRQs disabled
> *MMU off
> *Instruction cache either on or off
> *Data cache turned off
Would recommend saying "Data cache(s) turned off" so that L2 cache is
included.
> ===Minimal state for Flattened Device Tree Boot===
> For FDT booting, the tagged list only needs to contain a single device
> tree tag, and the device tree blob could be appended to the end of the
> tagged list so that everything resides in the same region of memory.
That's a bad idea. Sometimes the tagged list can be extended by wrappers
around the kernel, and data placed at the end of the list would be
overwritten.
As the tagged list can encode arbitarily sized data chunks, there's no
reason to use a pointer in the tagged list. However, there is a problem:
what do you do with a large chunk of data in the tagged list? You can't
allocate memory to copy it in the kernel because no memory allocators
are up and running...
That's always been the catch-22 with passing binary data blobs to the
kernel.
next prev parent reply other threads:[~2010-03-25 21:04 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-24 15:11 RFC: ARM Boot standard for passing device tree blob Grant Likely
2010-03-25 21:04 ` Russell King - ARM Linux [this message]
2010-03-25 23:40 ` David Gibson
2010-03-26 0:23 ` Jeremy Kerr
2010-03-26 3:24 ` Grant Likely
2010-03-26 13:37 ` Catalin Marinas
2010-03-26 17:43 ` Mitch Bradley
2010-03-26 18:13 ` Grant Likely
2010-03-26 19:30 ` Nicolas Pitre
2010-03-26 19:52 ` Grant Likely
2010-03-26 23:03 ` Russell King - ARM Linux
2010-03-29 11:24 ` Dave P. Martin
2010-03-30 0:26 ` Jamie Lokier
2010-03-30 13:32 ` Dave P. Martin
2010-03-26 23:00 ` Russell King - ARM Linux
2010-03-31 1:10 ` Ben Dooks
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=20100325210409.GH24984@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--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).