Thread (32 messages) 32 messages, 8 authors, 2017-11-28

Re: [PATCH v2 2/5] powerpc: pseries: vio: match parent nodes with of_find_node_by_path

From: Rob Herring <hidden>
Date: 2017-08-24 18:09:12
Also in: linuxppc-dev, lkml

On Tue, Aug 22, 2017 at 12:12 AM, Michael Ellerman [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Rob Herring [off-list ref] writes:
quoted
In preparation to remove the full path from device_node.full_name, use
of_find_node_by_path instead of open coding with strcmp.

Signed-off-by: Rob Herring <redacted>
Cc: Benjamin Herrenschmidt <redacted>
Cc: Paul Mackerras <redacted>
Cc: Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org>
Cc: linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
---
v2:
- rebased to linux-next and removed spurious change fro patch 1.

 arch/powerpc/platforms/pseries/vio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/platforms/pseries/vio.c b/arch/powerpc/platforms/pseries/vio.c
index aa5ca74316fa..5754572deb23 100644
--- a/arch/powerpc/platforms/pseries/vio.c
+++ b/arch/powerpc/platforms/pseries/vio.c
@@ -1357,9 +1357,9 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node)
       */
      parent_node = of_get_parent(of_node);
      if (parent_node) {
-             if (!strcmp(parent_node->full_name, "/ibm,platform-facilities"))
+             if (parent_node == of_find_node_by_path("/ibm,platform-facilities"))
                      family = PFO;
-             else if (!strcmp(parent_node->full_name, "/vdevice"))
+             else if (parent_node == of_find_node_by_path("/vdevice"))
                      family = VDEVICE;
This leaks references to the looked up nodes.

Both these nodes are defined in PAPR (our hypervisor spec), and both of
them must have a device_type, either "ibm,platform-facilities" or
"vdevice".

Looking at the commit that added the code I don't see any particular
reason it used the comparison against full_name, rather than using the
device_type.

So I'm inclined to do this instead:
diff --git a/arch/powerpc/platforms/pseries/vio.c b/arch/powerpc/platforms/pseries/vio.c
index 8a47f168476b..f26f906e6021 100644
--- a/arch/powerpc/platforms/pseries/vio.c
+++ b/arch/powerpc/platforms/pseries/vio.c
@@ -1357,9 +1357,9 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node)
         */
        parent_node = of_get_parent(of_node);
        if (parent_node) {
-               if (!strcmp(parent_node->full_name, "/ibm,platform-facilities"))
+               if (!strcmp(parent_node->type, "ibm,platform-facilities"))
                        family = PFO;
-               else if (!strcmp(parent_node->full_name, "/vdevice"))
+               else if (!strcmp(parent_node->type, "vdevice"))
                        family = VDEVICE;
                else {
                        pr_warn("%s: parent(%s) of %s not recognized.\n",

I've checked both Qemu and kvmtool add the device_type, and I'm fairly
confident that PowerVM does too. Anyway I'll test it on all the machines
I can find.
Okay, do you want me to respin the patch or will you update it with
the above change?

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