From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-acpi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
linux-leds@vger.kernel.org, linux-media@vger.kernel.org,
netdev@vger.kernel.org, linux-spi@vger.kernel.org,
"Rafael J. Wysocki" <rafael@kernel.org>,
Len Brown <lenb@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Danilo Krummrich <dakr@kernel.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Daniel Scally <djrscally@gmail.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Javier Carrasco <javier.carrasco@wolfvision.net>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Lee Jones <lee@kernel.org>, Pavel Machek <pavel@kernel.org>,
Matthias Fend <matthias.fend@emfend.at>,
Chanwoo Choi <cw00.choi@samsung.com>,
Krzysztof Kozlowski <krzk@kernel.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Paul Elder <paul.elder@ideasonboard.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Horatiu Vultur <horatiu.vultur@microchip.com>,
UNGLinuxDriver@microchip.com, Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Mark Brown <broonie@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@kernel.org>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>
Subject: [PATCH v2 04/16] ACPI: property: Return present device nodes only on fwnode interface
Date: Wed, 24 Sep 2025 10:45:50 +0300 [thread overview]
Message-ID: <20250924074602.266292-5-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <20250924074602.266292-1-sakari.ailus@linux.intel.com>
fwnode_graph_get_next_subnode() may return fwnode backed by ACPI device
nodes and there has been no check these devices are present in the system,
unlike there has been on fwnode OF backend. In order to provide consistent
behaviour towards callers, add a check for device presence by introducing
a new function acpi_get_next_present_subnode(), used as the
get_next_child_node() fwnode operation that also checks device node
presence.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
drivers/acpi/property.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index 5438592dc136..01f3880ffcce 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -1319,6 +1319,26 @@ acpi_get_next_subnode(const struct fwnode_handle *fwnode,
return NULL;
}
+/**
+ * acpi_get_next_present_subnode - Return the next present child node handle for a fwnode
+ * @fwnode: Firmware node to find the next child node for.
+ * @child: Handle to one of the device's child nodes or a null handle.
+ * Like acpi_get_next_subnode(), but the device nodes returned by
+ * acpi_get_next_present_subnode() are guaranteed to be present.
+ * Returns: The next sub-node fwnode handle.
+ */
+static struct fwnode_handle *
+acpi_get_next_present_subnode(const struct fwnode_handle *fwnode,
+ struct fwnode_handle *child)
+{
+ do {
+ child = acpi_get_next_subnode(fwnode, child);
+ } while (is_acpi_device_node(child) &&
+ !acpi_device_is_present(to_acpi_device_node(child)));
+
+ return child;
+}
+
/**
* acpi_node_get_parent - Return parent fwnode of this fwnode
* @fwnode: Firmware node whose parent to get
@@ -1664,7 +1684,7 @@ static int acpi_fwnode_irq_get(const struct fwnode_handle *fwnode,
.property_read_string_array = \
acpi_fwnode_property_read_string_array, \
.get_parent = acpi_node_get_parent, \
- .get_next_child_node = acpi_get_next_subnode, \
+ .get_next_child_node = acpi_get_next_present_subnode, \
.get_named_child_node = acpi_fwnode_get_named_child_node, \
.get_name = acpi_fwnode_get_name, \
.get_name_prefix = acpi_fwnode_get_name_prefix, \
--
2.47.3
next prev parent reply other threads:[~2025-09-24 7:46 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-24 7:45 [PATCH v2 00/16] Align availability checks on fwnode child node enumeration Sakari Ailus
2025-09-24 7:45 ` [PATCH v2 01/16] ACPI: property: Make acpi_get_next_subnode() static Sakari Ailus
2025-09-24 9:27 ` Laurent Pinchart
2025-09-24 9:49 ` Laurent Pinchart
2025-09-29 9:10 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 02/16] ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only Sakari Ailus
2025-09-24 9:29 ` Laurent Pinchart
2025-09-24 18:32 ` Dmitry Torokhov
2025-09-26 6:18 ` Sakari Ailus
2025-09-29 9:11 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 03/16] ACPI: property: Rework acpi_graph_get_next_endpoint() Sakari Ailus
2025-09-24 9:39 ` Laurent Pinchart
2025-09-26 11:49 ` Sakari Ailus
2025-09-24 7:45 ` Sakari Ailus [this message]
2025-09-24 9:57 ` [PATCH v2 04/16] ACPI: property: Return present device nodes only on fwnode interface Laurent Pinchart
2025-09-29 9:35 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 05/16] property: Move Return: section of fwnode_graph_get_endpoint_by_id() down Sakari Ailus
2025-09-24 9:58 ` Laurent Pinchart
2025-09-29 9:37 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 06/16] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_by_id() Sakari Ailus
2025-09-24 9:59 ` Laurent Pinchart
2025-09-24 7:45 ` [PATCH v2 07/16] property: Drop DEVICE_DISABLED flag in fwnode_graph_get_endpoint_count() Sakari Ailus
2025-09-24 10:00 ` Laurent Pinchart
2025-09-29 9:40 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 08/16] property: Document that fwnode API returns available nodes Sakari Ailus
2025-09-24 10:06 ` Laurent Pinchart
2025-09-29 9:44 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 09/16] driver core: Use fwnode_for_each_child_node() instead Sakari Ailus
2025-09-24 10:01 ` Laurent Pinchart
2025-09-29 9:47 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 10/16] net: lan966x: " Sakari Ailus
2025-09-24 10:02 ` Laurent Pinchart
2025-09-29 9:48 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 11/16] Input: touch-overlay - " Sakari Ailus
2025-09-24 10:02 ` Laurent Pinchart
2025-09-24 18:36 ` Dmitry Torokhov
2025-09-29 9:49 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 12/16] media: thp7312: " Sakari Ailus
2025-09-24 10:02 ` Laurent Pinchart
2025-09-25 10:40 ` Paul Elder
2025-09-29 9:50 ` Jonathan Cameron
2025-09-24 7:45 ` [PATCH v2 13/16] leds: " Sakari Ailus
2025-09-24 10:02 ` Laurent Pinchart
2025-09-29 9:51 ` Jonathan Cameron
2025-09-24 7:46 ` [PATCH v2 14/16] leds: Use fwnode_get_next_child_node() instead Sakari Ailus
2025-09-24 10:03 ` Laurent Pinchart
2025-09-29 9:51 ` Jonathan Cameron
2025-09-24 7:46 ` [PATCH v2 15/16] property: Drop functions operating on "available" child nodes Sakari Ailus
2025-09-24 10:04 ` Laurent Pinchart
2025-09-29 9:53 ` Jonathan Cameron
2025-09-24 7:46 ` [PATCH v2 16/16] spi: cadence: Remove explicit device node availability check Sakari Ailus
2025-09-24 8:38 ` Mark Brown
2025-09-24 10:04 ` Laurent Pinchart
2025-09-29 9:54 ` Jonathan Cameron
2025-09-24 10:52 ` [PATCH v2 00/16] Align availability checks on fwnode child node enumeration Rafael J. Wysocki
2025-09-26 11:48 ` Sakari Ailus
2025-09-26 12:52 ` Rafael J. Wysocki
2025-10-09 12:38 ` (subset) " Lee Jones
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=20250924074602.266292-5-sakari.ailus@linux.intel.com \
--to=sakari.ailus@linux.intel.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=andrew+netdev@lunn.ch \
--cc=andriy.shevchenko@linux.intel.com \
--cc=broonie@kernel.org \
--cc=cw00.choi@samsung.com \
--cc=dakr@kernel.org \
--cc=davem@davemloft.net \
--cc=djrscally@gmail.com \
--cc=dmitry.torokhov@gmail.com \
--cc=edumazet@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=horatiu.vultur@microchip.com \
--cc=javier.carrasco@wolfvision.net \
--cc=krzk@kernel.org \
--cc=kuba@kernel.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=lee@kernel.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=matthias.fend@emfend.at \
--cc=mchehab@kernel.org \
--cc=mingo@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=paul.elder@ideasonboard.com \
--cc=pavel@kernel.org \
--cc=rafael@kernel.org \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox