public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8] of: automate of_node_put() - new approach to loops.
@ 2024-02-11 17:42 Jonathan Cameron
  2024-02-11 17:42 ` [PATCH 1/8] of: Add cleanup.h based auto release via __free(device_node) markings Jonathan Cameron
                   ` (8 more replies)
  0 siblings, 9 replies; 15+ messages in thread
From: Jonathan Cameron @ 2024-02-11 17:42 UTC (permalink / raw)
  To: linux-iio, Rob Herring, Frank Rowand, linux-kernel, Julia Lawall
  Cc: Peter Zijlstra, Nicolas Palix, Sumera Priyadarsini,
	Rafael J . Wysocki, Len Brown, linux-acpi, Andy Shevchenko,
	Greg Kroah-Hartman, Nuno Sá, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Since RFC:
- Provide a for_each_available_child_of_node_scoped() variant and
  use that whenever we aren't specifically trying to include disabled
  nodes.
- Fix the for_each_child_of_node_scoped() to not use a mix of
  _available_ and other calls.
- Include a few more examples.  The last one is there to show that
  not all uses of the __free(device_node) call are due to the loops.

Thanks to Julia Lawal who also posted coccinelle for both types (loop and
non loop cases)

https://lore.kernel.org/all/alpine.DEB.2.22.394.2401312234250.3245@hadrien/
https://lore.kernel.org/all/alpine.DEB.2.22.394.2401291455430.8649@hadrien/

The cover letter of the RFC includes information on the various approaches
considered.
https://lore.kernel.org/all/20240128160542.178315-1-jic23@kernel.org/

Whilst these macros profduce nice reductions in complexity the loops
still have the unfortunate side effect of hiding the local declaration
of a struct device_node * which is then used inside the loop.

Julia suggested making that a little more visible via
 #define for_each_child_of_node_scoped(parent, struct device_node *, child)
but in discussion we both expressed that this doesn't really make things
all that clear either so I haven't adopted this suggestion.

If the responses to this series are positive I can put the first few
patches on an immutable branch, allowing rapid adoption in other trees
if people want to move quickly. If not we can wait for next cycle and
just take this infrastructure through the IIO tree ready for the 6.9
merge cycle.

I'll be optimistic that we are converging and send out an equivalent
series for fwnode_handle / property.h to replace the previous proposal:
https://lore.kernel.org/all/20240114172009.179893-1-jic23@kernel.org/


Jonathan Cameron (8):
  of: Add cleanup.h based auto release via __free(device_node) markings.
  of: Introduce for_each_*_child_of_node_scoped() to automate
    of_node_put() handling
  of: unittest: Use for_each_child_of_node_scoped()
  iio: adc: fsl-imx25-gcq: Use for_each_available_child_node_scoped()
  iio: adc: rcar-gyroadc: use for_each_available_child_node_scoped()
  iio: adc: ad7124: Use for_each_available_child_of_node_scoped()
  iio: adc: ad7292: Use for_each_available_child_of_node_scoped()
  iio: adc: adi-axi-adc: Use __free(device_node) and guard(mutex)

 drivers/iio/adc/ad7124.c        | 20 ++++++--------------
 drivers/iio/adc/ad7292.c        |  7 ++-----
 drivers/iio/adc/adi-axi-adc.c   | 16 ++++------------
 drivers/iio/adc/fsl-imx25-gcq.c | 13 +++----------
 drivers/iio/adc/rcar-gyroadc.c  | 21 ++++++---------------
 drivers/of/unittest.c           | 11 +++--------
 include/linux/of.h              | 15 +++++++++++++++
 7 files changed, 39 insertions(+), 64 deletions(-)

-- 
2.43.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2024-02-23  9:13 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-11 17:42 [PATCH 0/8] of: automate of_node_put() - new approach to loops Jonathan Cameron
2024-02-11 17:42 ` [PATCH 1/8] of: Add cleanup.h based auto release via __free(device_node) markings Jonathan Cameron
2024-02-11 17:42 ` [PATCH 2/8] of: Introduce for_each_*_child_of_node_scoped() to automate of_node_put() handling Jonathan Cameron
2024-02-12  8:20   ` Julia Lawall
2024-02-12 11:37     ` Jonathan Cameron
2024-02-11 17:42 ` [PATCH 3/8] of: unittest: Use for_each_child_of_node_scoped() Jonathan Cameron
2024-02-11 17:42 ` [PATCH 4/8] iio: adc: fsl-imx25-gcq: Use for_each_available_child_node_scoped() Jonathan Cameron
2024-02-11 17:42 ` [PATCH 5/8] iio: adc: rcar-gyroadc: use for_each_available_child_node_scoped() Jonathan Cameron
2024-02-11 17:42 ` [PATCH 6/8] iio: adc: ad7124: Use for_each_available_child_of_node_scoped() Jonathan Cameron
2024-02-11 17:42 ` [PATCH 7/8] iio: adc: ad7292: " Jonathan Cameron
2024-02-11 17:42 ` [PATCH 8/8] iio: adc: adi-axi-adc: Use __free(device_node) and guard(mutex) Jonathan Cameron
2024-02-12 12:03 ` [PATCH 0/8] of: automate of_node_put() - new approach to loops Andy Shevchenko
2024-02-16 14:47   ` Jonathan Cameron
2024-02-16 15:25     ` Andy Shevchenko
2024-02-23  9:13       ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox