Received: by 2002:a05:7208:9594:b0:7e:5202:c8b4 with SMTP id gs20csp840527rbb; Sun, 25 Feb 2024 06:26:20 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXOUC6P7BPiEhu5q76UQmWHeAfXau7mEVjFdpYn8m7BEz0FkUNud3rrXmELmkW6GUaeXPdKs/Z0UbIWephvr1h9ccBupUzKMpzHcuh4nw== X-Google-Smtp-Source: AGHT+IHjjMB4q7G7bynVh8dbGA2f3MnItl3X/OkIKccs5laeVnu4FartsqFvA8n3H24TEwjw/RRh X-Received: by 2002:a17:906:1ecc:b0:a3f:3c26:b250 with SMTP id m12-20020a1709061ecc00b00a3f3c26b250mr2439956ejj.40.1708871180052; Sun, 25 Feb 2024 06:26:20 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708871180; cv=pass; d=google.com; s=arc-20160816; b=hpRUgzKDq/OpXYq14ZT0jeLsAwSuadrG/aZC8tFKtTip/FKRbMw/b2UkOJnKyot3ym 6tWu/TvpXRuNeU9RR/7ae0vovGP6cY+lMPvMaDtVBBEYNMdWRZv0f9pEC39nnXJ0gK3d w4DxORIFDtdYM2VdfRIuKWTizY9gG7k6ekGzJ5XbXkqWOAmfNDW8GzsSqfYMbRiqiDgT zpwXGL+PnR7bP0duzCm5Tt3NHVIO7aCEQ/WLZCZ1iElwbQ9rEjY4vjnCkCaYD84ivY/0 PGRlNXmb3HPEFUFSAH/wXwlGvuY6rycv89fE2IgSiZm1Z8fgEiGWQbUtPCaBrurJyHTM /ndQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :subject:cc:to:from:date:dkim-signature; bh=kVj9sOUNwdZzIthYPB2zPZAyDy9bZOE12iA0PoVyKwM=; fh=D6fU6Jm6tAh2KTnQUFLRJoHFLL7MBxIaL9/uqueHFqE=; b=kjS4gH3DbWSeDcyZJLI5ufyFLqkvQT+uvyEn+THQ9lnO0V7xQkff4K6+WgX9Ry86Xv dOpIYayNgEytpr5XE8APRYBC80SM1DjxdumxMsWjF9AT60j+RJewJlDC3VEnfbgv30wL qGZ5Tiko2/oxHyOjLbzEvLvpL+wfRP8s1DiPvsN37LppL5DpYhfrbP4pLuRCSFsrOT54 yCvll1x+M6ZQM6iTPz4hbqRIm8NG8YjTdz08VEdV+XoNSPqFs98iyvfyysA9+IwXZGKy oybmnn8uOpfHBHSS9ul6ybf8QusEcGYWs8KI/OuPLPrHIyLY2uu0FXCDYTDaRQxno1nR aXMg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=kkZhsTN9; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-80096-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-80096-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id qx23-20020a170906fcd700b00a3fa562dea6si1242481ejb.822.2024.02.25.06.26.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Feb 2024 06:26:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-80096-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=kkZhsTN9; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-80096-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-80096-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id B21111F21360 for ; Sun, 25 Feb 2024 14:26:19 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8BD32134B6; Sun, 25 Feb 2024 14:26:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kkZhsTN9" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B045079D3; Sun, 25 Feb 2024 14:26:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708871170; cv=none; b=k3SN4/xND+XUaRZmOeCk0PYopACfdfZ2o5ZZgOre/6MSGd329IXdEUDarg5AjdXK8y7AocJCD1Gz9pDSvudisDUdnwzChaLfqcIdxTZrJVeuACK3ZUIZMHe5rfkM/owXzFjwXwbe7+MK9WRjGalmuXN3xF1gPD9tsLJRFpfv8OM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708871170; c=relaxed/simple; bh=DSkIOEmSp0C6kr5aSqiw6aDcTQkT4NmpKejcQ5yj5vQ=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=soAEX2kcbHHAD0R+ObcekhqbeQA2xEDN492XeFNH+PNHIg6u6s+X9PWUWpD6ogUe4RQlOHMCvzuslq5la26oPq5tD2mX6mpAE7RpOFH7KkzYX+t/dEeRCPQti+G+Wsz3gxIEH4FND15HW8Zov7TeEvruRaiNXXSHEWUHktR0Nts= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kkZhsTN9; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB897C433F1; Sun, 25 Feb 2024 14:26:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708871170; bh=DSkIOEmSp0C6kr5aSqiw6aDcTQkT4NmpKejcQ5yj5vQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=kkZhsTN9XAiyaBMtDDyksufVLT3WhEXWjwe8uPjGEyQ1Lg0+ENVTan2CR3isrn2Qd co0QwhMSI76mZvgZZ/51IsXGfsRgpk/k8V2iAZN2MEunrClFUWlgL3jpTcdLTswxMF w+u8GJC8QLzP4AJ+4gj2UacBRRCDNcwb0+uST3U/jKbnXDss8Rb44ujNzzM4Ywhdcf Udq3c/wgjJUB9jToGkDv/t9DhWu8Z2+wCONuUnF/tOAmDkivJqByjMCPXgzYn/nSnJ whOqCuUxpqEX+IixDIBPyzjQvKb+xPg1XOxPAvPxeRusw6r8z5/QmJvq6dT0HjtvUQ c+FYPPFB9VT5g== Date: Sun, 25 Feb 2024 14:25:55 +0000 From: Jonathan Cameron To: Jonathan Cameron Cc: , Rob Herring , Frank Rowand , , Julia Lawall , Peter Zijlstra , Andy Shevchenko , Greg Kroah-Hartman , Subject: Re: [PATCH v2 0/4] of: automate of_node_put() - new approach to loops. Message-ID: <20240225142555.6afdec07@jic23-huawei> In-Reply-To: <20240223124432.26443-1-Jonathan.Cameron@huawei.com> References: <20240223124432.26443-1-Jonathan.Cameron@huawei.com> X-Mailer: Claws Mail 4.2.0 (GTK 3.24.41; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 23 Feb 2024 12:44:28 +0000 Jonathan Cameron wrote: > 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/ I missed the devicetree list. Will resend with a brief summary of the discussion on v2 so far. Sorry for the noise! > > 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(-) >