[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140827144403.GB13850@arm.com>
Date: Wed, 27 Aug 2014 15:44:03 +0100
From: Catalin Marinas <catalin.marinas@....com>
To: Grant Likely <grant.likely@...aro.org>
Cc: Mark Rutland <Mark.Rutland@....com>,
Alexander Holler <holler@...oftware.de>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
Jon Loeliger <jdl@....com>,
Russell King <linux@....linux.org.uk>,
Arnd Bergmann <arnd@...db.de>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Rob Herring <robh+dt@...nel.org>,
Thierry Reding <thierry.reding@...il.com>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>
Subject: Re: [RFC PATCH 0/9] dt: dependencies (for deterministic driver
initialization order based on the DT)
On Wed, Aug 27, 2014 at 11:34:32AM +0100, Grant Likely wrote:
> On Tue, 26 Aug 2014 11:11:07 +0100, Mark Rutland <mark.rutland@....com> wrote:
> > On Tue, Aug 26, 2014 at 10:42:04AM +0100, Alexander Holler wrote:
> > > Am 26.08.2014 10:49, schrieb Thierry Reding:
> > > > On Tue, Aug 26, 2014 at 09:42:08AM +0100, Grant Likely wrote:
> > > >> On Mon, 25 Aug 2014 15:37:16 +0200, Thierry Reding <thierry.reding@...il.com> wrote:
> > > > [...]
> > > >>> There are somewhat standardized bindings for the above and especially
> > > >>> for bindings of the type that clocks implement this is trivial. We can
> > > >>> simply iterate over each (phandle, specifier) tuple and check that the
> > > >>> corresponding clock provider can be resolved (which typically means that
> > > >>> it's been registered with the common clock framework).
> > > >>>
> > > >>> For regulators (and regulator-like bindings) the problem is somewhat
> > > >>> more difficult because they property names are not standardized. One way
> > > >>> to solve this would be to look for property names with a -supply suffix,
> > > >>> but that could obviously lead to false positives. One alternative that I
> > > >>> think could eliminate this would be to explicitly list dependencies in
> > > >>> drivers. This would allow core code to step through such a list and
> > > >>> resolve the (phandle, specifier) tuples.
> > > >>
> > > >> False positives and negatives may not actually be a problem. It is
> > > >> suboptimal, certainly, but it shouldn't outright break the kernel.
> > > >
> > > > There could be cases where some random integer in a cell could be
> > > > interpreted as a phandle and resolve to a struct device_node. I suppose
> > > > it might be unlikely, but not impossible, that the device_node could
> > > > even match a device in the correct subsystem and you'd get a wrong
> > > > dependency. Granted, a wrong dependency may not be catastrophic in that
> > > > it won't lead to a crash, but it could lead to various kinds of
> > > > weirdness and hard to diagnose problems.
> > >
> > > You need either the type information in the DTB (that's why I've add
> > > those "dependencies" to identify phandles), or you need to know every
> > > binding (at "dependency-resolve-time" to identify phandles.
> >
> > While having type information in the DTB would be fantastic, it's not
> > something we can expect from the systems already in the wild, and I
> > worry how it would interact with bootloaders that modify the DTB (I
> > don't know if any modify properties with phandles).
>
> Anything we do here is firmly in the realm of optimization and
> improvement. Adding data to the tree is fine as long as we don't make
> the kernel depend on it. Older platforms will continue to work without
> the optimization.
It's not just optimisation but an important feature for new arm64 SoCs.
Given some Tegra discussions recently, in many cases the machine_desc
use on arm is primarily to initialise devices in the right order. If we
can solve this in a more deterministic way (other than deferred
probing), we avoid the need for a dedicated SoC platform driver (or
machine_desc) or workarounds like different initcall levels and explicit
DT parsing.
--
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists