From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Robert Schwebel <r.schwebel@pengutronix.de>
Cc: Timur Tabi <timur@freescale.com>,
devicetree-discuss <devicetree-discuss@ozlabs.org>,
linux-kernel@vger.kernel.org, Janboe Ye <yuan-bo.ye@motorola.com>,
linux-arm-kernel@lists.arm.linux.org.uk, rmk@arm.linux.org.uk
Subject: Re: [RFC] [PATCH] Device Tree on ARM platform
Date: Thu, 28 May 2009 17:32:05 +1000 [thread overview]
Message-ID: <1243495925.3171.134.camel@pasglop> (raw)
In-Reply-To: <20090527150527.GK6805@pengutronix.de>
On Wed, 2009-05-27 at 17:05 +0200, Robert Schwebel wrote:
> I'm highly convinced that the existence of oftree-hell in ARM-land would
> have been *the* key motivation for FSL to have worked on mainline
> instead of inhouse-BSPs back in 2004 when we mainlined i.MX1 and in 2007
> when we started the mainline work on MX27 and MX31.
>
> Seriously: oftree in general is a good idea. Just that it doesn't work
> in practise. The concept has some serious flaws:
Lots of strong words and animosity here ... we may not have got
everything right the first time around, an some things may still be wet
behind the ears but overall, I'm strongly convinced that this whole
thing ended up being a net benefit for various reasons though not
necessarily the most obvious ones.
> - The whole concept is based on the assumption that bindings are defined
> *once*, then never to be changed again. As this is not true (check
> MPC5200 to find out what I mean), oftree wreckage is *the* main cause
> of new kernels not working on old bootloaders any more. Is there a
> solution of this problem? I have not seen a good idea how to avoid the
> constant change in definitions.
Bindings are defined as we go and mostly -can- be changed, it's actually
not that a big deal. It depends what your approach is though vs. putting
the device-tree in a firmware or just shipping it wrapped with the
kernel. Right, putting DTs in firmwares mean potential issues like that,
but we dealt on real OF based platforms with serious differences in
approach and bindings between IBM, Apple and Sun without big
difficulties.
IE. It's not a big deal in practice, at least not as much as it seems.
Part of the problem exposed by the bindings discussions is typical to
internet discussions where the less complex the problem is, the more
idiots come in and think they have something to contribute :-)
Mostly, a binding only need some good work once for bus types, and a lot
of the common ones have been ironed out. Funnily enough, it looks like
we may have to do one for amba on powerpc soon too :-)
For actual devices, there's a huge amount of flexibility. It's nice to
be standardize whenever possible, but in the end, the content of a node
is a deal between the device-tree and the driver.
> - The oftree layering is fundamentally broken. We already have a sane
> abstraction for arbitrary hardware in the kernel: platform devices.
> Why not instanciate platform devices from a generic oftree core?
I don't understand what you mean here. Platform devices are everything
-but- a sane abstraction, but again, there is absolutely no issue there,
it's completely orthogonal.
Nowadays, any struct device can be linked to an OF device node thanks to
the archdata extension that we added to the generic struct device. One
of the idea we have in mind is to create a simple mechanism that
"intanciate" devices based on probing them in the tree, regardless of
the actual bus and linux device "type" (platform, PCI, i2c, ...).
> - Platform data makes it possible to store function pointers. There
> is no equivalent to this concept in oftree-land.
I don't see why there would be ... those are totally different issues
here.
> oftree could be a great tool if these things would be resolved.
> Currently they are not, and in result, ARM just works and is easy,
> whereas on PowerPC systems people often spend more time working on
> binding stuff than on the actual functionality.
A lot of conservatism here and little attempt to even think about the
possible benefits :-)
There are areas where the device-tree have proved invaluable. One is
interrupt routing. The ability of the DT to represent any possible
interrupt layout of cascaded PICs and other fucked up schemes is great,
which mixed with powerpc simple virtual interrupt mapping scheme greatly
simplified handling of many setups.
You really only need to describe in each device what PIC it's connected
to, what IRQ on that PIC and the sense info. You can convert interrupt
domain using maps (useful for PCI). The kernel provide simple helper to
retrieve this, and with our IRQ remapping core (which I would recommend
porting as well), can trivially assign PIC/irq pairs to a linux irq
number. No more hard wired ranges that blow up every time you try to
add a new GPIO controller in the system etc...
It's also proved very useful to effectively have all the data related
to how the HW is wired together in one single place rather than spread
among 25 drivers and platform files.
And that's just some ...
Cheers,
Ben.
next prev parent reply other threads:[~2009-05-28 7:37 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-27 7:08 [RFC] [PATCH] Device Tree on ARM platform Janboe Ye
2009-05-27 14:27 ` Grant Likely
2009-05-27 14:39 ` Timur Tabi
2009-05-27 15:05 ` Robert Schwebel
2009-05-27 15:39 ` Grant Likely
2009-05-27 16:20 ` Robert Schwebel
2009-05-27 20:35 ` Grant Likely
2009-05-27 23:48 ` Robert Schwebel
2009-05-27 23:52 ` David Miller
2009-05-27 23:58 ` Scott Wood
2009-05-28 0:02 ` David Miller
2009-05-28 0:07 ` Robert Schwebel
2009-05-28 0:15 ` David Miller
2009-05-28 10:37 ` Mark Brown
2009-05-28 22:32 ` Grant Likely
2009-05-29 12:34 ` Mark Brown
2009-05-30 9:52 ` Benjamin Herrenschmidt
2009-05-30 10:21 ` Russell King - ARM Linux
2009-05-30 17:56 ` Mark Brown
2009-06-02 7:57 ` Holger Schurig
2009-06-02 9:48 ` Mark Brown
2009-05-28 2:57 ` David Gibson
2009-05-28 3:36 ` Grant Likely
2009-05-28 3:29 ` Grant Likely
2009-05-28 9:51 ` Wolfgang Denk
2009-05-28 9:59 ` David Miller
2009-05-28 10:13 ` Robert Schwebel
2009-05-28 13:33 ` Jon Smirl
2009-05-28 13:42 ` Robert Schwebel
2009-05-28 9:38 ` Wolfgang Denk
2009-05-28 3:21 ` Grant Likely
2009-05-28 3:16 ` Grant Likely
2009-05-28 0:55 ` Stephen Neuendorffer
2009-05-27 18:56 ` Alexander Clouter
2009-05-27 20:46 ` Grant Likely
2009-05-27 21:32 ` Alexander Clouter
2009-05-27 15:41 ` Peter Korsgaard
2009-05-27 16:23 ` Scott Wood
2009-05-27 17:56 ` Russell King
2009-05-27 19:08 ` Scott Wood
2009-05-27 19:13 ` Jon Smirl
2009-05-27 19:21 ` Russell King - ARM Linux
2009-05-27 19:39 ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:22 ` Grant Likely
2009-05-27 20:19 ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:54 ` Grant Likely
2009-05-28 3:04 ` David Gibson
2009-05-28 7:58 ` Benjamin Herrenschmidt
2009-05-27 23:57 ` Robert Schwebel
2009-05-28 0:00 ` David Miller
2009-05-28 3:21 ` Grant Likely
2009-05-28 6:34 ` Wolfram Sang
2009-05-28 7:55 ` Benjamin Herrenschmidt
2009-05-28 13:34 ` Grant Likely
2009-05-28 7:48 ` Benjamin Herrenschmidt
2009-05-28 14:22 ` Ben Dooks
2009-05-27 20:28 ` David Miller
2009-05-27 20:31 ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-28 2:52 ` David Gibson
2009-05-28 4:27 ` David Miller
2009-05-28 4:47 ` David Gibson
2009-05-28 5:31 ` David Miller
2009-05-28 5:47 ` David Gibson
2009-05-28 7:47 ` Benjamin Herrenschmidt
2009-05-28 14:17 ` Ben Dooks
2009-05-28 14:24 ` Robert Schwebel
2009-05-28 14:47 ` Grant Likely
2009-05-27 19:29 ` Russell King
2009-05-27 19:47 ` Sergei Shtylyov
2009-05-27 19:53 ` Scott Wood
2009-05-27 19:54 ` Timur Tabi
2009-05-27 20:25 ` David Miller
2009-05-27 20:27 ` Timur Tabi
2009-05-27 20:55 ` David Miller
2009-05-27 23:26 ` Robert Schwebel
2009-05-27 20:35 ` M. Warner Losh
2009-05-27 20:14 ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:23 ` David Miller
2009-05-27 20:27 ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:48 ` Josh Boyer
2009-05-27 20:56 ` David Miller
2009-05-27 20:52 ` Mark Brown
2009-05-27 21:05 ` Grant Likely
2009-05-28 0:11 ` Jon Smirl
2009-05-28 12:43 ` Sascha Hauer
2009-05-28 13:18 ` Thomas Gleixner
2009-05-28 15:04 ` Sascha Hauer
2009-05-28 15:27 ` Thomas Gleixner
2009-05-29 0:51 ` Benjamin Herrenschmidt
2009-05-29 7:52 ` Sascha Hauer
2009-05-29 9:08 ` Benjamin Herrenschmidt
2009-05-31 10:52 ` Russell King - ARM Linux
2009-05-28 14:31 ` Grant Likely
2009-05-28 3:25 ` David Gibson
2009-05-28 8:10 ` Benjamin Herrenschmidt
2009-05-28 7:38 ` Benjamin Herrenschmidt
2009-05-27 20:43 ` Grant Likely
2009-05-28 7:37 ` Benjamin Herrenschmidt
2009-05-28 9:15 ` Russell King - ARM Linux
2009-05-28 9:57 ` David Miller
2009-05-28 10:11 ` Benjamin Herrenschmidt
2009-05-28 10:33 ` Robert Schwebel
2009-05-28 10:34 ` Russell King - ARM Linux
2009-05-28 22:33 ` Benjamin Herrenschmidt
2009-05-28 10:14 ` Russell King - ARM Linux
2009-05-28 21:30 ` David Miller
2009-05-28 12:17 ` Dmitry Eremin-Solenikov
2009-05-28 12:48 ` David Gibson
2009-05-28 12:55 ` David Gibson
2009-05-28 14:13 ` Grant Likely
2009-05-28 16:53 ` Russell King - ARM Linux
2009-05-28 17:05 ` Grant Likely
2009-05-28 18:46 ` Alexander Clouter
2009-05-28 22:21 ` Benjamin Herrenschmidt
2009-05-29 1:39 ` David Gibson
2009-05-29 1:59 ` Mitch Bradley
2009-05-29 3:52 ` Benjamin Herrenschmidt
2009-05-29 4:11 ` David Miller
2009-05-29 4:11 ` David Miller
2009-05-29 4:56 ` Benjamin Herrenschmidt
2009-05-29 5:11 ` David Miller
2009-05-28 10:00 ` Benjamin Herrenschmidt
2009-05-28 11:44 ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-28 12:47 ` Jon Smirl
2009-05-28 14:39 ` Grant Likely
2009-05-28 14:54 ` Grant Likely
2009-05-27 18:26 ` Peter Korsgaard
2009-05-27 16:32 ` Mark Brown
2009-05-27 18:50 ` Jon Smirl
2009-05-27 22:24 ` Mark Brown
2009-05-28 0:04 ` Jon Smirl
2009-05-28 13:07 ` Mark Brown
2009-05-27 20:42 ` Grant Likely
2009-05-27 21:38 ` Mark Brown
2009-05-28 3:02 ` David Gibson
2009-05-28 7:32 ` Benjamin Herrenschmidt [this message]
2009-05-28 13:38 ` Grant Likely
2009-05-27 22:01 ` Mitch Bradley
2009-05-28 8:17 ` Benjamin Herrenschmidt
2009-05-28 12:43 ` Holger Schurig
2009-05-28 13:12 ` Mark Brown
2009-05-27 17:44 ` Russell King
2009-05-27 17:52 ` Grant Likely
2009-05-28 3:44 ` David Gibson
2009-05-30 11:22 ` Pavel Machek
2009-05-31 1:29 ` Kyle Moffett
2009-05-31 5:56 ` David Miller
2009-06-01 8:37 ` Dmitry Eremin-Solenikov
2009-05-31 10:08 ` Russell King - ARM Linux
2009-06-01 9:24 ` Stephen Rothwell
2009-06-01 10:36 ` Janboe Ye
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=1243495925.3171.134.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=devicetree-discuss@ozlabs.org \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=r.schwebel@pengutronix.de \
--cc=rmk@arm.linux.org.uk \
--cc=timur@freescale.com \
--cc=yuan-bo.ye@motorola.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