From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Daniel Scally <djrscally@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jakub Kicinski <kuba@kernel.org>,
linux-acpi@vger.kernel.org, netdev@vger.kernel.org,
Paolo Abeni <pabeni@redhat.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Vladimir Oltean <olteanv@gmail.com>
Subject: Re: [PATCH RFC net-next 6/7] net: dsa: mv88e6xxx: provide software node for default settings
Date: Fri, 24 Mar 2023 17:04:25 +0000 [thread overview]
Message-ID: <ZB3YGWTWLYyecgw7@shell.armlinux.org.uk> (raw)
In-Reply-To: <ZB24fDEqwx53Rthm@kuha.fi.intel.com>
On Fri, Mar 24, 2023 at 04:49:32PM +0200, Heikki Krogerus wrote:
> Hi Russell,
>
> On Wed, Mar 22, 2023 at 12:00:21PM +0000, Russell King (Oracle) wrote:
> > +static struct fwnode_handle *mv88e6xxx_create_fixed_swnode(struct fwnode_handle *parent,
> > + int speed,
> > + int duplex)
> > +{
> > + struct property_entry fixed_link_props[3] = { };
> > +
> > + fixed_link_props[0] = PROPERTY_ENTRY_U32("speed", speed);
> > + if (duplex == DUPLEX_FULL)
> > + fixed_link_props[1] = PROPERTY_ENTRY_BOOL("full-duplex");
> > +
> > + return fwnode_create_named_software_node(fixed_link_props, parent,
> > + "fixed-link");
> > +}
> > +
> > +static struct fwnode_handle *mv88e6xxx_create_port_swnode(phy_interface_t mode,
> > + int speed,
> > + int duplex)
> > +{
> > + struct property_entry port_props[2] = {};
> > + struct fwnode_handle *fixed_link_fwnode;
> > + struct fwnode_handle *new_port_fwnode;
> > +
> > + port_props[0] = PROPERTY_ENTRY_STRING("phy-mode", phy_modes(mode));
> > + new_port_fwnode = fwnode_create_software_node(port_props, NULL);
> > + if (IS_ERR(new_port_fwnode))
> > + return new_port_fwnode;
> > +
> > + fixed_link_fwnode = mv88e6xxx_create_fixed_swnode(new_port_fwnode,
> > + speed, duplex);
> > + if (IS_ERR(fixed_link_fwnode)) {
> > + fwnode_remove_software_node(new_port_fwnode);
> > + return fixed_link_fwnode;
> > + }
> > +
> > + return new_port_fwnode;
> > +}
>
> That new fwnode_create_named_software_node() function looks like a
> conflict waiting to happen - if a driver adds a node to the root level
> (does not have to be root level), all the tests will pass because
> there is only a single device, but when a user later tries the driver
> with two devices, it fails, because the node already exist. But you
> don't need that function at all.
I think you're totally failing to explain how this can fail.
Let me reiterate what thestructure of the swnodes here is:
root
`- node%d (%d allocated by root IDA)
+- phy-mode property
`- fixed-link
+- speed property
`- optional full-duplex property
If we have two different devices creating these nodes, then at the
root level, they will end up having different root names. The
"fixed-link" is a child of this node.
swnode already allows multiple identical names at the sub-node
level - each node ends up with its own IDA to allocate the generic
"node%d" names from. So as soon as we have multiple nodes, they
end up as this:
root
+- node0
| `- node 0
+- node1
| `- node 0
+- node2
| `- node 0
etc
So, if we end up with two devices creating these at the same time,
we end up with:
root
+- nodeA (A allocated by root IDA)
| +- phy-mode property
| `- fixed-link
| +- speed property
| `- optional full-duplex property
`- nodeB (B allocated by root IDA, different from above)
+- phy-mode property
`- fixed-link
+- speed property
`- optional full-duplex property
Since the kobject is parented to the parent's kobject, what we
end up with in sysfs is:
.../nodeA/fixed-link/speed
.../nodeB/fixed-link/speed
Thus, the "fixed-link" ndoes can _not_ conflict.
Please explain in detail where you think the conflict is, because
so far no one has been able to counter my assertions that this is
_safe_ with a proper full technical description of the problem.
All I get is hand-wavey "this conflicts".
Honestly, I'm getting sick of poor quality reviews... the next
poor review that claims there's a conflict here without properly
explain it will be told where to go.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2023-03-24 17:04 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-22 11:59 [PATCH RFC net-next 0/7] Another attempt at moving mv88e6xxx forward Russell King (Oracle)
2023-03-22 11:59 ` [PATCH RFC net-next 1/7] software node: allow named software node to be created Russell King
2023-03-23 13:59 ` Andy Shevchenko
2023-03-23 14:29 ` Russell King (Oracle)
2023-03-23 14:39 ` Andy Shevchenko
2023-03-22 12:00 ` [PATCH RFC net-next 2/7] net: phylink: provide phylink_find_max_speed() Russell King (Oracle)
2023-03-22 18:44 ` Andrew Lunn
2023-03-22 12:00 ` [PATCH RFC net-next 3/7] net: dsa: use fwnode_get_phy_mode() to get phy interface mode Russell King (Oracle)
2023-03-22 18:42 ` Andrew Lunn
2023-03-23 14:03 ` Andy Shevchenko
2023-03-23 14:31 ` Russell King (Oracle)
2023-03-23 14:38 ` Andy Shevchenko
2023-03-23 14:49 ` Russell King (Oracle)
2023-03-23 15:00 ` Andy Shevchenko
2023-03-23 15:23 ` Russell King (Oracle)
2023-03-23 15:33 ` Andy Shevchenko
2023-03-23 16:29 ` Russell King (Oracle)
2023-03-23 16:18 ` Russell King (Oracle)
2023-03-23 16:34 ` Andy Shevchenko
2023-03-23 16:39 ` Andy Shevchenko
2023-03-23 17:06 ` Russell King (Oracle)
2023-03-23 17:28 ` Andy Shevchenko
2023-03-23 17:53 ` Russell King (Oracle)
2023-03-23 18:04 ` Andy Shevchenko
2023-03-23 20:46 ` Russell King (Oracle)
2023-03-22 12:00 ` [PATCH RFC net-next 4/7] net: dsa: add ability for switch driver to provide a swnode Russell King (Oracle)
2023-03-22 12:00 ` [PATCH RFC net-next 5/7] net: dsa: avoid DT validation for drivers which provide default config Russell King (Oracle)
2023-03-22 18:51 ` Andrew Lunn
2023-03-22 20:09 ` Russell King (Oracle)
2023-03-22 20:14 ` Andrew Lunn
2023-03-22 20:20 ` Russell King (Oracle)
2023-03-22 12:00 ` [PATCH RFC net-next 6/7] net: dsa: mv88e6xxx: provide software node for default settings Russell King (Oracle)
2023-03-22 18:57 ` Andrew Lunn
2023-03-22 20:13 ` Russell King (Oracle)
2023-03-22 20:17 ` Andrew Lunn
2023-03-22 20:22 ` Russell King (Oracle)
2023-03-22 21:40 ` Andrew Lunn
2023-03-23 8:41 ` Russell King (Oracle)
2023-03-23 18:17 ` Andrew Lunn
2023-03-23 18:25 ` Russell King (Oracle)
2023-03-23 18:34 ` Andrew Lunn
2023-03-24 14:49 ` Heikki Krogerus
2023-03-24 17:04 ` Russell King (Oracle) [this message]
2023-03-27 10:28 ` Heikki Krogerus
2023-03-27 10:55 ` Russell King (Oracle)
2023-03-27 14:13 ` Heikki Krogerus
2023-03-27 14:32 ` Russell King (Oracle)
2023-03-27 15:45 ` Russell King (Oracle)
2023-03-28 12:09 ` Heikki Krogerus
2023-03-28 13:23 ` Russell King (Oracle)
2023-03-29 14:07 ` Heikki Krogerus
2023-03-29 14:33 ` Russell King (Oracle)
2023-03-30 13:54 ` Heikki Krogerus
2023-04-03 13:02 ` Russell King (Oracle)
2023-04-05 17:51 ` Greg Kroah-Hartman
2023-03-22 12:00 ` [PATCH RFC net-next 7/7] net: dsa: mv88e6xxx: remove handling for DSA and CPU ports Russell King (Oracle)
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=ZB3YGWTWLYyecgw7@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=andriy.shevchenko@linux.intel.com \
--cc=davem@davemloft.net \
--cc=djrscally@gmail.com \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=rafael@kernel.org \
--cc=sakari.ailus@linux.intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.