Message ID | 20240225142714.286440-1-jic23@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | of: automate of_node_put() - new approach to loops. | expand |
On Sun, Feb 25, 2024 at 02:27:10PM +0000, Jonathan Cameron wrote: > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > Some discussion occured on previous posting. > https://lore.kernel.org/linux-iio/20240223124432.26443-1-Jonathan.Cameron@huawei.com/ > > Summary: > * fwnode conversions should be considered when applying this > infrastructure to a driver. Perhaps better to move directly to > the generic FW property handling rather than improve existing > of specific code. > * There are lots of potential places to use this based on detections > from Julia's coccinelle scripts linked below. > > The equivalent device_for_each_child_node_scoped() series for > fwnode will be queued up in IIO for the merge window shortly as > it has gathered sufficient tags. Hopefully the precdent set there > for the approach will reassure people that instantiating the > child variable inside the macro definition is the best approach. > https://lore.kernel.org/linux-iio/20240217164249.921878-1-jic23@kernel.org/ > > v2: Andy suggested most of the original converted set should move to > generic fwnode / property.h handling. Within IIO that was > a reasonable observation given we've been trying to move away from > firmware specific handling for some time. Patches making that change > to appropriate drivers posted. > As we discussed there are cases which are not suitable for such > conversion and this infrastructure still provides clear benefits > for them. > > Ideally it would be good if this introductory series adding the > infrastructure makes the 6.9 merge window. There are no dependencies > on work queued in the IIO tree, so this can go via devicetree > if the maintainers would prefer. I've had some off list messages > asking when this would be merged, as there is interest in building > on it next cycle for other parts of the kernel (where conversion to > fwnode handling may be less appropriate). I'll let you take it. For the series: Reviewed-by: Rob Herring <robh@kernel.org> I've got some drivers/of/ conversions too, but they are probably next cycle at this point. Rob
On Fri, 1 Mar 2024 16:39:42 -0600 Rob Herring <robh@kernel.org> wrote: > On Sun, Feb 25, 2024 at 02:27:10PM +0000, Jonathan Cameron wrote: > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > Some discussion occured on previous posting. > > https://lore.kernel.org/linux-iio/20240223124432.26443-1-Jonathan.Cameron@huawei.com/ > > > > Summary: > > * fwnode conversions should be considered when applying this > > infrastructure to a driver. Perhaps better to move directly to > > the generic FW property handling rather than improve existing > > of specific code. > > * There are lots of potential places to use this based on detections > > from Julia's coccinelle scripts linked below. > > > > The equivalent device_for_each_child_node_scoped() series for > > fwnode will be queued up in IIO for the merge window shortly as > > it has gathered sufficient tags. Hopefully the precdent set there > > for the approach will reassure people that instantiating the > > child variable inside the macro definition is the best approach. > > https://lore.kernel.org/linux-iio/20240217164249.921878-1-jic23@kernel.org/ > > > > v2: Andy suggested most of the original converted set should move to > > generic fwnode / property.h handling. Within IIO that was > > a reasonable observation given we've been trying to move away from > > firmware specific handling for some time. Patches making that change > > to appropriate drivers posted. > > As we discussed there are cases which are not suitable for such > > conversion and this infrastructure still provides clear benefits > > for them. > > > > Ideally it would be good if this introductory series adding the > > infrastructure makes the 6.9 merge window. There are no dependencies > > on work queued in the IIO tree, so this can go via devicetree > > if the maintainers would prefer. I've had some off list messages > > asking when this would be merged, as there is interest in building > > on it next cycle for other parts of the kernel (where conversion to > > fwnode handling may be less appropriate). > > I'll let you take it. For the series: > > Reviewed-by: Rob Herring <robh@kernel.org> > > I've got some drivers/of/ conversions too, but they are probably next > cycle at this point. > > Rob Thanks Rob, Whether this makes it for this cycle is probably dependent on whether Linus does decide to do got to rc8 as hinted at as a possibility + whether Greg feels comfortable taking these through his tree (char-misc is the normal path for IIO). I know various people are hoping this series makes it, but if doesn't we can do an immutable tree early next cycle (though obviously that may reduce speed of adoption). We are discussing the equivalent pull request for the fwnode version here: https://lore.kernel.org/linux-iio/2024030239-gift-cabdriver-266b@gregkh/T/#m87e7208820ebf6416a77a2973773b65a087b4796 I've optimistically applied this series to my togreg-cleanup branch and merged that into the togreg branch of iio.git for linux-next to pick up. Thanks, Jonathan
On Sun, 3 Mar 2024 11:56:33 +0000 Jonathan Cameron <jic23@kernel.org> wrote: > On Fri, 1 Mar 2024 16:39:42 -0600 > Rob Herring <robh@kernel.org> wrote: > > > On Sun, Feb 25, 2024 at 02:27:10PM +0000, Jonathan Cameron wrote: > > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > > > Some discussion occured on previous posting. > > > https://lore.kernel.org/linux-iio/20240223124432.26443-1-Jonathan.Cameron@huawei.com/ > > > > > > Summary: > > > * fwnode conversions should be considered when applying this > > > infrastructure to a driver. Perhaps better to move directly to > > > the generic FW property handling rather than improve existing > > > of specific code. > > > * There are lots of potential places to use this based on detections > > > from Julia's coccinelle scripts linked below. > > > > > > The equivalent device_for_each_child_node_scoped() series for > > > fwnode will be queued up in IIO for the merge window shortly as > > > it has gathered sufficient tags. Hopefully the precdent set there > > > for the approach will reassure people that instantiating the > > > child variable inside the macro definition is the best approach. > > > https://lore.kernel.org/linux-iio/20240217164249.921878-1-jic23@kernel.org/ > > > > > > v2: Andy suggested most of the original converted set should move to > > > generic fwnode / property.h handling. Within IIO that was > > > a reasonable observation given we've been trying to move away from > > > firmware specific handling for some time. Patches making that change > > > to appropriate drivers posted. > > > As we discussed there are cases which are not suitable for such > > > conversion and this infrastructure still provides clear benefits > > > for them. > > > > > > Ideally it would be good if this introductory series adding the > > > infrastructure makes the 6.9 merge window. There are no dependencies > > > on work queued in the IIO tree, so this can go via devicetree > > > if the maintainers would prefer. I've had some off list messages > > > asking when this would be merged, as there is interest in building > > > on it next cycle for other parts of the kernel (where conversion to > > > fwnode handling may be less appropriate). > > > > I'll let you take it. For the series: > > > > Reviewed-by: Rob Herring <robh@kernel.org> > > > > I've got some drivers/of/ conversions too, but they are probably next > > cycle at this point. > > > > Rob > > Thanks Rob, > > Whether this makes it for this cycle is probably dependent on whether > Linus does decide to do got to rc8 as hinted at as a possibility > + whether Greg feels comfortable taking these through his tree > (char-misc is the normal path for IIO). I know various people > are hoping this series makes it, but if doesn't we can do an immutable > tree early next cycle (though obviously that may reduce speed of adoption). > > We are discussing the equivalent pull request for the fwnode version here: > > https://lore.kernel.org/linux-iio/2024030239-gift-cabdriver-266b@gregkh/T/#m87e7208820ebf6416a77a2973773b65a087b4796 > > I've optimistically applied this series to my togreg-cleanup branch > and merged that into the togreg branch of iio.git for linux-next to pick up. > Greg, would you consider a last minute pull request for these, or picking them up directly? It would be helpful for Rob's follow ups and the work Julia is doing with coccinelle and automating of locating cases to apply this approach. If the device_for_each_child_node_scoped() series is fine this is almostly exactly the same thing for the device tree specific case. Not sure what your plans are for that pull request so I might be jumping the gun. If not (and assuming the generic property version does make it in) I'll do an immutable branch based on rc1 so that others can build on this via that. Fiddlier solution for everyone but given how late we are, perhaps the wiser one. FWIW they've been in linux-next a week without issue. Jonathan > Thanks, > > Jonathan >
On Sat, Mar 9, 2024 at 10:33 AM Jonathan Cameron <jic23@kernel.org> wrote: > > On Sun, 3 Mar 2024 11:56:33 +0000 > Jonathan Cameron <jic23@kernel.org> wrote: > > > On Fri, 1 Mar 2024 16:39:42 -0600 > > Rob Herring <robh@kernel.org> wrote: > > > > > On Sun, Feb 25, 2024 at 02:27:10PM +0000, Jonathan Cameron wrote: > > > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > > > > > Some discussion occured on previous posting. > > > > https://lore.kernel.org/linux-iio/20240223124432.26443-1-Jonathan.Cameron@huawei.com/ > > > > > > > > Summary: > > > > * fwnode conversions should be considered when applying this > > > > infrastructure to a driver. Perhaps better to move directly to > > > > the generic FW property handling rather than improve existing > > > > of specific code. > > > > * There are lots of potential places to use this based on detections > > > > from Julia's coccinelle scripts linked below. > > > > > > > > The equivalent device_for_each_child_node_scoped() series for > > > > fwnode will be queued up in IIO for the merge window shortly as > > > > it has gathered sufficient tags. Hopefully the precdent set there > > > > for the approach will reassure people that instantiating the > > > > child variable inside the macro definition is the best approach. > > > > https://lore.kernel.org/linux-iio/20240217164249.921878-1-jic23@kernel.org/ > > > > > > > > v2: Andy suggested most of the original converted set should move to > > > > generic fwnode / property.h handling. Within IIO that was > > > > a reasonable observation given we've been trying to move away from > > > > firmware specific handling for some time. Patches making that change > > > > to appropriate drivers posted. > > > > As we discussed there are cases which are not suitable for such > > > > conversion and this infrastructure still provides clear benefits > > > > for them. > > > > > > > > Ideally it would be good if this introductory series adding the > > > > infrastructure makes the 6.9 merge window. There are no dependencies > > > > on work queued in the IIO tree, so this can go via devicetree > > > > if the maintainers would prefer. I've had some off list messages > > > > asking when this would be merged, as there is interest in building > > > > on it next cycle for other parts of the kernel (where conversion to > > > > fwnode handling may be less appropriate). > > > > > > I'll let you take it. For the series: > > > > > > Reviewed-by: Rob Herring <robh@kernel.org> > > > > > > I've got some drivers/of/ conversions too, but they are probably next > > > cycle at this point. > > > > > > Rob > > > > Thanks Rob, > > > > Whether this makes it for this cycle is probably dependent on whether > > Linus does decide to do got to rc8 as hinted at as a possibility > > + whether Greg feels comfortable taking these through his tree > > (char-misc is the normal path for IIO). I know various people > > are hoping this series makes it, but if doesn't we can do an immutable > > tree early next cycle (though obviously that may reduce speed of adoption). > > > > We are discussing the equivalent pull request for the fwnode version here: > > > > https://lore.kernel.org/linux-iio/2024030239-gift-cabdriver-266b@gregkh/T/#m87e7208820ebf6416a77a2973773b65a087b4796 > > > > I've optimistically applied this series to my togreg-cleanup branch > > and merged that into the togreg branch of iio.git for linux-next to pick up. > > > > Greg, would you consider a last minute pull request for these, or picking them up > directly? It would be helpful for Rob's follow ups and the work Julia is doing > with coccinelle and automating of locating cases to apply this approach. > > If the device_for_each_child_node_scoped() series is fine this is almostly > exactly the same thing for the device tree specific case. Not sure what your > plans are for that pull request so I might be jumping the gun. > > If not (and assuming the generic property version does make it in) I'll do > an immutable branch based on rc1 so that others can build on this via that. > Fiddlier solution for everyone but given how late we are, perhaps the wiser > one. I'm happy to pick up the first 3 patches for 6.9 if you want. Rob
On Tue, 12 Mar 2024 12:10:46 -0600 Rob Herring <robh@kernel.org> wrote: > On Sat, Mar 9, 2024 at 10:33 AM Jonathan Cameron <jic23@kernel.org> wrote: > > > > On Sun, 3 Mar 2024 11:56:33 +0000 > > Jonathan Cameron <jic23@kernel.org> wrote: > > > > > On Fri, 1 Mar 2024 16:39:42 -0600 > > > Rob Herring <robh@kernel.org> wrote: > > > > > > > On Sun, Feb 25, 2024 at 02:27:10PM +0000, Jonathan Cameron wrote: > > > > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > > > > > > > Some discussion occured on previous posting. > > > > > https://lore.kernel.org/linux-iio/20240223124432.26443-1-Jonathan.Cameron@huawei.com/ > > > > > > > > > > Summary: > > > > > * fwnode conversions should be considered when applying this > > > > > infrastructure to a driver. Perhaps better to move directly to > > > > > the generic FW property handling rather than improve existing > > > > > of specific code. > > > > > * There are lots of potential places to use this based on detections > > > > > from Julia's coccinelle scripts linked below. > > > > > > > > > > The equivalent device_for_each_child_node_scoped() series for > > > > > fwnode will be queued up in IIO for the merge window shortly as > > > > > it has gathered sufficient tags. Hopefully the precdent set there > > > > > for the approach will reassure people that instantiating the > > > > > child variable inside the macro definition is the best approach. > > > > > https://lore.kernel.org/linux-iio/20240217164249.921878-1-jic23@kernel.org/ > > > > > > > > > > v2: Andy suggested most of the original converted set should move to > > > > > generic fwnode / property.h handling. Within IIO that was > > > > > a reasonable observation given we've been trying to move away from > > > > > firmware specific handling for some time. Patches making that change > > > > > to appropriate drivers posted. > > > > > As we discussed there are cases which are not suitable for such > > > > > conversion and this infrastructure still provides clear benefits > > > > > for them. > > > > > > > > > > Ideally it would be good if this introductory series adding the > > > > > infrastructure makes the 6.9 merge window. There are no dependencies > > > > > on work queued in the IIO tree, so this can go via devicetree > > > > > if the maintainers would prefer. I've had some off list messages > > > > > asking when this would be merged, as there is interest in building > > > > > on it next cycle for other parts of the kernel (where conversion to > > > > > fwnode handling may be less appropriate). > > > > > > > > I'll let you take it. For the series: > > > > > > > > Reviewed-by: Rob Herring <robh@kernel.org> > > > > > > > > I've got some drivers/of/ conversions too, but they are probably next > > > > cycle at this point. > > > > > > > > Rob > > > > > > Thanks Rob, > > > > > > Whether this makes it for this cycle is probably dependent on whether > > > Linus does decide to do got to rc8 as hinted at as a possibility > > > + whether Greg feels comfortable taking these through his tree > > > (char-misc is the normal path for IIO). I know various people > > > are hoping this series makes it, but if doesn't we can do an immutable > > > tree early next cycle (though obviously that may reduce speed of adoption). > > > > > > We are discussing the equivalent pull request for the fwnode version here: > > > > > > https://lore.kernel.org/linux-iio/2024030239-gift-cabdriver-266b@gregkh/T/#m87e7208820ebf6416a77a2973773b65a087b4796 > > > > > > I've optimistically applied this series to my togreg-cleanup branch > > > and merged that into the togreg branch of iio.git for linux-next to pick up. > > > > > > > Greg, would you consider a last minute pull request for these, or picking them up > > directly? It would be helpful for Rob's follow ups and the work Julia is doing > > with coccinelle and automating of locating cases to apply this approach. > > > > If the device_for_each_child_node_scoped() series is fine this is almostly > > exactly the same thing for the device tree specific case. Not sure what your > > plans are for that pull request so I might be jumping the gun. > > > > If not (and assuming the generic property version does make it in) I'll do > > an immutable branch based on rc1 so that others can build on this via that. > > Fiddlier solution for everyone but given how late we are, perhaps the wiser > > one. > > I'm happy to pick up the first 3 patches for 6.9 if you want. Thanks Rob, that would be great. Jonathan > > Rob >
From: Jonathan Cameron <Jonathan.Cameron@huawei.com> Some discussion occured on previous posting. https://lore.kernel.org/linux-iio/20240223124432.26443-1-Jonathan.Cameron@huawei.com/ Summary: * fwnode conversions should be considered when applying this infrastructure to a driver. Perhaps better to move directly to the generic FW property handling rather than improve existing of specific code. * There are lots of potential places to use this based on detections from Julia's coccinelle scripts linked below. The equivalent device_for_each_child_node_scoped() series for fwnode will be queued up in IIO for the merge window shortly as it has gathered sufficient tags. Hopefully the precdent set there for the approach will reassure people that instantiating the child variable inside the macro definition is the best approach. https://lore.kernel.org/linux-iio/20240217164249.921878-1-jic23@kernel.org/ v2: Andy suggested most of the original converted set should move to generic fwnode / property.h handling. Within IIO that was a reasonable observation given we've been trying to move away from firmware specific handling for some time. Patches making that change to appropriate drivers posted. As we discussed there are cases which are not suitable for such conversion and this infrastructure still provides clear benefits for them. Ideally it would be good if this introductory series adding the infrastructure makes the 6.9 merge window. There are no dependencies on work queued in the IIO tree, so this can go via devicetree if the maintainers would prefer. I've had some off list messages asking when this would be merged, as there is interest in building on it next cycle for other parts of the kernel (where conversion to fwnode handling may be less appropriate). The outputs of Julia's scripts linked below show how widely this can be easily applied and give a conservative estimate of the complexity reduction and code savings. In some cases those drivers should move to fwnode and use the equivalent infrastructure there, but many will be unsuitable for conversion so this is still good win. Edited cover letter from v1: 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 produce 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. Jonathan Cameron (4): 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: rcar-gyroadc: use for_each_available_child_node_scoped() drivers/iio/adc/rcar-gyroadc.c | 21 ++++++--------------- drivers/of/unittest.c | 11 +++-------- include/linux/of.h | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 23 deletions(-)