Thread (1 message) 1 message, 1 author, 2014-05-20

Re: [RFC/PATCH] of: platform: Remove unique device name enforcement

From: Grant Likely <hidden>
Date: 2014-05-20 06:50:14

On Sun, 18 May 2014 18:11:07 -0500, Rob Herring [off-list ref] wrote:
On Sun, May 18, 2014 at 12:01 PM, Ezequiel Garcia
[off-list ref] wrote:
quoted
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.
quoted
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.
quoted
Signed-off-by: Ezequiel Garcia <redacted>
---
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 majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help