On Sun, 18 May 2014 18:11:07 -0500, Rob Herring <[email protected]> wrote:
> On Sun, May 18, 2014 at 12:01 PM, Ezequiel Garcia
> <[email protected]> wrote:
> > When creating a device object for a devicetree node, the device name
> > is created by using the node name and the 'reg' property, to make a name
> > such as "a000.foo_device".
> >
> > For certain devices without an associated address, and hence no 'reg' 
> > property,
> > the current code attempts to make a unique name, by using a global integer.
> > Names look like "foo_device.1", "bar_device.2", and so on.
> > Examples of such devices are: gpio-keys', backlights and rotary-encoders.
> >
> > The system cannot know such devices name before hand, given they are 
> > determined
> > by the kernel probe order and by the nodes present in the devicetree. This 
> > can
> > be problematic, on systems that are tied to the device's name, e.g. when
> > catching hotplug events.

The device's uevent file in sysfs contains both the ->name and
->full_name values for a node. Does that help you?

The big problem is not the structure under /sys/devices, but rather the
symlinks to devices that appear under /sys/bus/*/devices. If two leaf
nodes have the same name, then they will conflict when they get added to
a bus_type's array of devices.

Another way to handle it is to only add the suffix when a conflict
actually occurs. That requires checking first whether or not a name will
conflict and ammending it only when that happens. I don't know if that
can be done nicely. I'll take a look.

> >
> > In order to fix the name, this commit removes the global integer uniqueness
> > enforcement and instead uses the node name for the device name. The 
> > rationale
> > behind such change, is that there's no way two nodes with the same node name
> > are associated to two different devices, by the nature of the devicetree.
> > In other words, it's impossible to produce a name collision for these kind
> > of devices.
> 
> This is perfectly legal:
> 
> /bus1/device
> /bus2/device
> 
> Only the full name has to be unique.
> 
> >
> > Signed-off-by: Ezequiel Garcia <[email protected]>
> > ---
> > Hello Grant, Rob:
> >
> > I'm pretty sure there's a good reason for the existence of the atomic magic
> > integer, so this is not a *real* patch, but rather a bold attempt at asking 
> > you
> > some explanations for this.
> >
> > Under what circumstances does the magic integer avoids a name collision?
> > Will this propposal introduce a regression?
> 
> See the recent changes to this function in linux-next and the
> associated discussion of those commits.
> 
> Rob

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to