From: Javier Carrasco <javier.carrasco.cruz@gmail.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Daniel Scally <djrscally@gmail.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Linus Walleij <linus.walleij@linaro.org>,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org
Subject: Re: [PATCH net-next 1/3] device property: Introduce fwnode_for_each_available_child_node_scoped()
Date: Fri, 11 Oct 2024 10:34:32 +0200 [thread overview]
Message-ID: <07ec0837-d7a3-413e-a281-e06feafe7f34@gmail.com> (raw)
In-Reply-To: <Zwi6Dn4yJxst4xv2@kekkonen.localdomain>
On 11/10/2024 07:39, Sakari Ailus wrote:
> Hi Javier,
>
> On Tue, Oct 08, 2024 at 06:10:27PM +0200, Javier Carrasco wrote:
>> Introduce the scoped variant of the
>> fwnode_for_each_available_child_node() to automatically decrement the
>> child's refcount when it goes out of scope, removing the need for
>> explicit calls to fwnode_handle_put().
>>
>> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
>> ---
>> include/linux/property.h | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/include/linux/property.h b/include/linux/property.h
>> index 61fc20e5f81f..b37508ecf606 100644
>> --- a/include/linux/property.h
>> +++ b/include/linux/property.h
>> @@ -168,6 +168,11 @@ struct fwnode_handle *fwnode_get_next_available_child_node(
>> for (child = fwnode_get_next_available_child_node(fwnode, NULL); child;\
>> child = fwnode_get_next_available_child_node(fwnode, child))
>>
>> +#define fwnode_for_each_available_child_node_scoped(fwnode, child) \
>> + for (struct fwnode_handle *child __free(fwnode_handle) = \
>> + fwnode_get_next_available_child_node(fwnode, NULL); child; \
>> + child = fwnode_get_next_available_child_node(fwnode, child))
>> +
>
> On OF, the implementation of the .get_next_child_node() fwnode op is:
>
> static struct fwnode_handle *
> of_fwnode_get_next_child_node(const struct fwnode_handle *fwnode,
> struct fwnode_handle *child)
> {
> return of_fwnode_handle(of_get_next_available_child(to_of_node(fwnode),
> to_of_node(child)));
> }
>
> On ACPI we currently have .device_is_available() returning false but that
> probably should be returning true instead (it's been virtually unused
> previously).
>
> That makes fwnode_get_next_available_child_node() and
> fwnode_get_next_child_node() equivalent on both ACPI and OF. Presumably
> creating unavailable nodes would be useless on swnode, too.
>
> So my question is: what do we gain by adding all these fwnode_*available()
> helpers?
>
>> struct fwnode_handle *device_get_next_child_node(const struct device *dev,
>> struct fwnode_handle *child);
>
Hi Sakari, thanks for your feedback.
I thought that the difference is not in OF (which either way ends up
calling __of_device_is_available()), but in ACPI.
For fwnode_for_each_child_node(), the ACPI callback is
acpi_get_next_subnode(), and I don't see that the device_is_available()
callback is used in that case.
For fwnode_for_each_available_child_node(),
fwnode_get_next_available_child_node() is used, which checks
fwnode_device_is_available(), which then calls device_is_available().
What's the catch?
Thanks again and best regards,
Javier Carrasco
next prev parent reply other threads:[~2024-10-11 8:34 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-08 16:10 [PATCH net-next 0/3] net, device property: fix led node releases in mv88e6xxx with new macro Javier Carrasco
2024-10-08 16:10 ` [PATCH net-next 1/3] device property: Introduce fwnode_for_each_available_child_node_scoped() Javier Carrasco
2024-10-10 14:32 ` Andy Shevchenko
2024-10-11 5:39 ` Sakari Ailus
2024-10-11 8:34 ` Javier Carrasco [this message]
2024-10-11 9:54 ` Sakari Ailus
2024-10-11 12:04 ` Javier Carrasco
2024-10-08 16:10 ` [PATCH net-next 2/3] net: dsa: mv88e6xxx: leds: fix led refcount in error path Javier Carrasco
2024-10-08 16:38 ` Andrew Lunn
2024-10-10 14:30 ` Andy Shevchenko
2024-10-08 16:10 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: leds: fix leds refcount Javier Carrasco
2024-10-08 16:40 ` Andrew Lunn
2024-10-08 23:31 ` Javier Carrasco
2024-10-10 14:33 ` Andy Shevchenko
2024-10-10 19:15 ` Javier Carrasco
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=07ec0837-d7a3-413e-a281-e06feafe7f34@gmail.com \
--to=javier.carrasco.cruz@gmail.com \
--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=kuba@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@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.