Re: [PATCH v3 02/10] software node: increase the reference of the swnode by its fwnode

From: Andy Shevchenko

Date: Fri Oct 31 2025 - 04:30:57 EST


On Thu, Oct 30, 2025 at 03:33:02AM -0700, Bartosz Golaszewski wrote:
> On Thu, 30 Oct 2025 10:34:46 +0100, Andy Shevchenko
> <andriy.shevchenko@xxxxxxxxxxxxxxx> said:
> > On Wed, Oct 29, 2025 at 01:28:36PM +0100, Bartosz Golaszewski wrote:
> >>
> >> Once we allow software nodes to reference other kinds of firmware nodes,
> >> the node in args will no longer necessarily be a software node so bump
> >> its reference count using its fwnode interface.
> >
> > Same, a short comment (or an update of a kernel-doc if present, I don't
> > remember).
> >
>
> Andy: the resulting code after patch 3/10 looks like this:
>
> struct fwnode_handle *refnode;
>
> (...)

Let's say something like below to be put here

/*
* The reference in software node may refer to a node of a different type.
* Depending on the type we choose either to use software node directly, or
* delegate that to fwnode API.
*/

> if (ref->swnode)
> refnode = software_node_fwnode(ref->swnode);
> else if (ref->fwnode)
> refnode = ref->fwnode;
> else
> return -EINVAL;
>
> if (!refnode)
> return -ENOENT;
>
> if (nargs_prop) {
> error = fwnode_property_read_u32(refnode, nargs_prop,
> &nargs_prop_val);
> if (error)
> return error;
>
> nargs = nargs_prop_val;
> }
>
> (...)
>
> args->fwnode = fwnode_handle_get(refnode);
>
> I'm typically all for comments but this code really is self-commenting.
> There's nothing ambiguous about the above. We know the refnode is an fwnode,
> we assign it and we pass it to the fwnode_ routines. What exactly would you
> add here that would make it clearer?

See above.

--
With Best Regards,
Andy Shevchenko