From: Grant Likely <grant.likely@secretlab.ca>
To: Mitch Bradley <wmb@firmworks.com>
Cc: Nicolas Pitre <nico@fluxnic.net>,
devicetree-discuss <devicetree-discuss@lists.ozlabs.org>,
linuxppc-dev <linuxppc-dev@ozlabs.org>,
microblaze-uclinux@itee.uq.edu.au,
Olof Johansson <olof@lixom.net>,
Dan Malek <ppc6dev@digitaldans.com>,
Jeremy Kerr <jeremy.kerr@canonical.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: Request review of device tree documentation
Date: Sun, 13 Jun 2010 23:02:15 -0600 [thread overview]
Message-ID: <AANLkTikls3hjXOmKFqG2D_9GaJSjOXNuuRXPlanAjo5E@mail.gmail.com> (raw)
In-Reply-To: <4C146F18.9030008@firmworks.com>
[cc'ing linux-arm-kernel because we're discussing ARM issues]
On Sat, Jun 12, 2010 at 11:39 PM, Mitch Bradley <wmb@firmworks.com> wrote:
> Grant Likely wrote:
>>
>> On Sat, Jun 12, 2010 at 4:52 PM, Benjamin Herrenschmidt
>> <benh@kernel.crashing.org> wrote:
>>
>>>
>>> On Sat, 2010-06-12 at 06:30 -1000, Mitch Bradley wrote:
>>>
>>>
>>>>
>>>> I'm certainly going to try keeping OFW alive. =A0On the x86 OLPC machi=
nes,
>>>> the ability to
>>>> dive into OFW via a SysRq key combo was very helpful for debugging som=
e
>>>> difficult
>>>> problems. =A0The team has asked me to support the feature on ARM.
>>>>
>>>
>>> Oh well, if you can and can convince the ARM kernel folks to do the
>>> necessary changes ... :-)
>>>
>>
>> What is needed to keep OFW alive? =A0I've got no problem with doing so
>> if it isn't invasive, and as long as the same boot entry interface can
>> be used.
>>
>
> Minimally, OFW needs to own some memory that the kernel won't steal. =A0O=
FW on
> ARM
> is position-independent, so it can be tucked up at the top of memory fair=
ly
> easily.
>
> To call back into OFW, the virtual mapping for that memory needs to be
> reestablished.
> Or perhaps the MMU and caches can be turned off for the duration of the
> callback.
> I don't have the details of ARM MMUs and caches reloaded into my head yet=
.
> =A0Maybe next week...
Remapping the MMU could be hairy, but I see no issue with marking
OFW's memory as reserved. How does OFW currently tell the OS what
memory it should not touch because OFW is using it? Is it device tree
data or another mechanism?
> Also, for debugging, OFW typically needs access to a UART. =A0If the OS i=
s
> using the UART,
> it's often possible for OFW to use it just by turning off interrupts and
> polling the UART.
This doesn't sound onerous.
>> What is the use-case for having a dynamic device tree?
>
> The use case for a dynamic device tree is not compelling.
>
> In SPARC / Solaris land, Open Boot managed the non-volatile configuration
> variables, which the OS could access and modify dynamically as properties=
in
> /options. =A0The OS didn't have to know the storage layout nor the hardwa=
re
> details of the storage device. =A0Convenient, but not hugely important.
I think the assumption can be made that this will not be a use case on ARM.
>> =A0I can see
>> keeping OFW alive being useful for some debug facilities, but once the
>> kernel has started, I'm really not interested in relying on firmware
>> to manage the hardware.
>
> That's sort of a self-fulfilling prophecy. =A0If 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. 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.
I'm also convinced that the economics are all wrong for "getting it
right" when talking about firmware. Manufactures don't care about
firmware; they care about selling boxes. Customers don't care about
firmware, they care about the operating system (well, that's not true
either, they care about applications). For manufactures, once it can
boot the real operating system, there is little to no incentive to
spend any more money on firmware when the money can be better spent on
either the next product or the adding features to the operating system
of the existing product. In fact, spending money on firmware is
actually *more risky* one a product ships, because if a firmware
upgrade goes bad, then that means product returned for repair at the
factory.
For me, this leads to two conclusions;
- That the OS should have little to no dependencies on the firmware
after it is booted so that bug fixes remain entirely in the realm of
the operating system.
- That the description of the hardware (ie Device Tree or ACPI) should
be decoupled enough from firmware that bugs in the data do not force a
firmware upgrade. The data must always be updatabie. Even if
configuration or data is completely corrupt, it must still be simple
to recover.
Note: I'm not critiquing OFW on either of these points. These are
just some of my base requirements when I approach system design.
> In PC land, the current status quo is that Windows depends on ACPI so
> heavily that BIOS vendors pretty much have to get that part of the puzzle
> right. =A0Microsoft did a thorough job of creating certification tests an=
d
> enforcing their use. =A0I'm not praising ACPI, just pointing out the dyna=
mics
> that result from assignment of responsibility.
Yet how many boards are shipped with broken ACPI tables? Just
bringing up ACPI in the presence of a kernel developer seems to bring
about the onset of Tourette's. Bios provides enough data to be able
to boot the operating system, but in my experience it still requires
extra drivers to be added after installation for everything to work
right.
OTOH, I'm not had to deal with ACPI personally, so I may also be
talking out of my backside on this point. :-)
> That said, I'm not interested in pushing the issue. =A0It's okay with me =
if
> the device tree is static as far as the kernel is concerned, and callback=
s
> to OFW are only used for debugging purposes.
The current intent is to only accept the flat tree representation when
booting the kernel. So we'll need to encode the callback pointer into
the tree somewhere.
Cheers,
g.
next prev parent reply other threads:[~2010-06-14 5:02 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-11 22:59 Request review of device tree documentation Grant Likely
2010-06-11 23:47 ` Dan Malek
2010-06-12 2:58 ` Benjamin Herrenschmidt
2010-06-12 4:48 ` Mitch Bradley
2010-06-12 6:53 ` Grant Likely
2010-06-12 8:19 ` Mitch Bradley
2010-06-12 10:45 ` Benjamin Herrenschmidt
2010-06-12 10:48 ` Benjamin Herrenschmidt
2010-06-12 16:30 ` Mitch Bradley
2010-06-12 22:52 ` Benjamin Herrenschmidt
2010-06-13 5:07 ` Grant Likely
2010-06-13 5:39 ` Mitch Bradley
2010-06-13 5:59 ` Benjamin Herrenschmidt
2010-06-13 6:45 ` Mitch Bradley
2010-06-13 8:29 ` Benjamin Herrenschmidt
2010-06-14 5:36 ` Grant Likely
2010-06-14 20:00 ` Ben Dooks
2010-06-13 8:57 ` Benjamin Herrenschmidt
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
2010-06-14 5:02 ` Grant Likely [this message]
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
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-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
2010-06-13 5:48 ` Benjamin Herrenschmidt
2010-06-14 5:13 ` Grant Likely
2010-06-14 6:09 ` Benjamin Herrenschmidt
2010-06-14 6:17 ` Mitch Bradley
2010-06-12 22:15 ` Olof Johansson
2010-06-12 23:09 ` Grant Likely
2010-06-13 6:47 ` [microblaze-uclinux] " Edgar E. Iglesias
2010-06-12 3:00 ` Benjamin Herrenschmidt
2010-06-12 3:07 ` Benjamin Herrenschmidt
2010-06-13 13:12 ` Jeremy Kerr
2010-06-14 5:40 ` Grant Likely
2010-06-12 17:33 ` Stephan Gatzka
2010-06-12 18:19 ` Grant Likely
2010-06-14 5:54 ` Grant Likely
2010-08-05 4:43 ` David Gibson
2010-09-01 16:19 ` Grant Likely
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=AANLkTikls3hjXOmKFqG2D_9GaJSjOXNuuRXPlanAjo5E@mail.gmail.com \
--to=grant.likely@secretlab.ca \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=jeremy.kerr@canonical.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=microblaze-uclinux@itee.uq.edu.au \
--cc=nico@fluxnic.net \
--cc=olof@lixom.net \
--cc=ppc6dev@digitaldans.com \
--cc=wmb@firmworks.com \
/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).