From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 D7EA23F86F5 for ; Mon, 29 Jun 2026 09:13:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782724442; cv=none; b=TdLSDJ3l7IbF8IWN+MH7q+uGjIXK0bnSDF1h6t2FnWnboB0vIFPdiUT9olrSAKjKrGBOGWCqhBKBY5GE5qETMdaMeDwvAdkSnwKBUZs/fKgcyn1yyqVE85Vp5YQyJDW+BaGaILq2R1MAuw6E6AE3UOHYwXjBqD8GAy4HITEO+CA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782724442; c=relaxed/simple; bh=VEyUxYLMr0/kZUc3hQzqiXRE39K4YPDPrI9dGBJJGzo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ABVDvPR61t7LfF962PMmrltcQWLoHxoVuZhdkvGpJv5jRcxIJ3dYRkQplC8W3NaATQrJkYkrm3G0Hj9VaVz+FBVdRmWg2MT5Qif6kUMvawkcThmGdFiNxLrfwBVxtxOlQc3U/H5NHBdeUwu2Qo0ixojTdRUqtC0Y2dU1MEQeG0s= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jXRgvZnj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Z7GfDAf0; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jXRgvZnj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Z7GfDAf0" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65T91NxH2400847 for ; Mon, 29 Jun 2026 09:13:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= p1CXheUuAMODxr2cJ8/mrzTf3yj1wuZdPj+yzX83Vyc=; b=jXRgvZnjw5GcHWfE EdU7pqnfu1aWmT1Qn83DNUkYLXZwtGxZctz5Pk3eozOWBd2IJevGjeFy9d+S2RDI b3b72IXqCckD20juun7ZhHEfyVD5nJtyyHcSQOMo30hCVGZxHgHELkthlpER1Vz6 0Eb5Qv15bCrjQT7N9QhM13gtQQB9/4AUtNto0lbiDQOJcoHuuSzbNTdq8XEOHe/G c2tEUTwdqe10fVkez/t5upUYrbnnxsM4T48AAdSfvA9y+NZG3EJ0istb+YJ+knp/ bBGVlhKOwCxw3JF+ZskQRCKUV8AxFXwVEJSQu3IZqDJMPo9bQBuN3xDFCfueJBvB aptFDQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f3nq881vr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 29 Jun 2026 09:13:59 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92b380149c4so247799385a.3 for ; Mon, 29 Jun 2026 02:13:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782724438; x=1783329238; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=p1CXheUuAMODxr2cJ8/mrzTf3yj1wuZdPj+yzX83Vyc=; b=Z7GfDAf0pGD4kxhH495wPdWjwpjdA/2gRH/O3RdM+HUVFc2vPESEa1OzNDdjS/3Dpi cWoM9ae3QgS60gjCiSX86rsmkbqYTmKFvzMw7eOn5d3wRWPABLqdn0Si3w4XNQYnUVlK DJgAnaIomMsXuhbo02TCUtm4FYELxyzQeqAjaG6184SzDuWHJpX6QNK3Av1at//00WXs jLLG6y2EZIDh8xRBjFSRxJ1UDRYGuSO+iyImSuwHBjSN7kCI0pdNfc+yRt33tBQzAiQX p9NE10puO95IvNZCNm8OKoqtm5/q2Tl06Ou1zZG4PEo+yzuShtQinO5uSruHUm1ONmsA 6jjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782724438; x=1783329238; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=p1CXheUuAMODxr2cJ8/mrzTf3yj1wuZdPj+yzX83Vyc=; b=dyVFN1LrvJ17M5cAr1Bp+vE1MJlL/wpV3E6t05/A5rVXCS32h2R3M3VcuyqCTJCu22 6gG5+eISKdW7BQMOTNc2PY6J/tfp6Sj45AYg2eLeplyY7IxpC37l8JA6jB6YIsplTK0B +LFrapkVrFgKYVCwOs1gF+eyF5s84FGFijGqDTDglOXza9CgKQxI5LZawKOaRCEythLX dASXuW15q2hIrkjE7OQ0e7JtZLCT7OrPMNQqRkyaEjKyByoydjnig7e7k2B4s0s7UPvE 8I9U7S0sDFkLzsHDrVCnVGnDdX0i8esclZnWxrD/X6UdTXy/g2r0x3q04osmJB5A8cvi UE4A== X-Forwarded-Encrypted: i=1; AFNElJ9uBUCt98Opk7DwMtxxLiCAo3+/8sniTX6m/2R8wn+LFkLHN5CyCIN/ZT+OFM0tYKRjwcwwGXok8bnRIg==@vger.kernel.org X-Gm-Message-State: AOJu0YxIzEN4wlnpymbbq2jqReknV+uZCNR3IdUK1hpgfxpKQ3W6fDyB EqxJvlHUVh46ejfLbu7EamWwcO9nGC5ZemWDohHI8QH2o9DwHrTfIWa2K2C6/kOhDrXpgIr24kI ZPJFQeVzy4dEzPVjZeMrX1pAnK7FUdiD6igsD1/25ON7RwL+frlPrxHD/TRbOMslSDg== X-Gm-Gg: AfdE7cnFXBLlGCa7VqlhBtr/QC58YroZfcvbQILme0OK7ZRZESKjAXqdRMyE0D5s7o5 /oUHtY+ymVvokCkfV5lDl3y0ZRRQ+DaffKTD+hbjotIzwg/JSYX29/pQZ29QNz1nppl5d8+F7gX xgzo99UtzahihMND9/HI5AM28iEjwRiAbEUqmfq1LZTtFicSpKO99QP1Uh9Lg6XtqRHsMz/5DKg YFJN5fmKnLKioN3zdmHyG4FFonWP29ZKZ5jXrB67+Oixr4+IKg3ESO7WaoZaK5iSt9tnqPTvw/a EO8dKZO40aUEonogOCYHOjCzmvlaJHBMNYDcIRxVh2PZfoeOZk98RHEmYLWiAeWxyO46hZHpkXu 4i8dd7j6uN29iNU43ug20CGJNv8yZFnaJFTWz0o3k X-Received: by 2002:a05:620a:6499:b0:915:9273:9239 with SMTP id af79cd13be357-92b3b6eeaf7mr1315080685a.13.1782724437761; Mon, 29 Jun 2026 02:13:57 -0700 (PDT) X-Received: by 2002:a05:620a:6499:b0:915:9273:9239 with SMTP id af79cd13be357-92b3b6eeaf7mr1315070685a.13.1782724436678; Mon, 29 Jun 2026 02:13:56 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:4640:d76a:6126:9b65]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-470f55acda0sm20109240f8f.23.2026.06.29.02.13.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 02:13:55 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 29 Jun 2026 11:12:42 +0200 Subject: [PATCH v2 19/19] driver core: platform: count references to all kinds of firmware nodes Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260629-pdev-fwnode-ref-v2-19-8abe2513f96e@oss.qualcomm.com> References: <20260629-pdev-fwnode-ref-v2-0-8abe2513f96e@oss.qualcomm.com> In-Reply-To: <20260629-pdev-fwnode-ref-v2-0-8abe2513f96e@oss.qualcomm.com> To: Lee Jones , Mark Brown , Thierry Reding , Sebastian Hesselbarth , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Srinivas Kandagatla , Greg Kroah-Hartman , Vinod Koul , "Rafael J. Wysocki" , Danilo Krummrich , Rob Herring , Saravana Kannan , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , "Christophe Leroy (CS GROUP)" , Andi Shyti , Andy Shevchenko , Joerg Roedel , Will Deacon , Robin Murphy , Doug Berger , Florian Fainelli , Broadcom internal kernel review list , Ulf Hansson , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Matthew Brost , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Rodrigo Vivi , David Airlie , Simona Vetter , Peter Chen , Paul Cercueil , Bin Liu , Philipp Zabel , Maximilian Luz , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Krzysztof Kozlowski , Benjamin Herrenschmidt Cc: brgl@kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-sound@vger.kernel.org, driver-core@lists.linux.dev, devicetree@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-i2c@vger.kernel.org, iommu@lists.linux.dev, linux-pm@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-usb@vger.kernel.org, linux-mips@vger.kernel.org, platform-driver-x86@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2549; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=VEyUxYLMr0/kZUc3hQzqiXRE39K4YPDPrI9dGBJJGzo=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqQjcV2ZO/mjVvS7fscrieifMk6bWNF2AN6BkT5 4dxIfGu2nWJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCakI3FQAKCRAFnS7L/zaE w2YpEACbPZSAaWOfh+OuT1Zwlgz+BsRRZZy6cDhBoTiUeYqKdcPmZxipz2TsAMuIlfYPKLh5abm 46zQkAaG1vtOnsxm9+NTs1QAQ6xkDAoZzhIZMDHqyOPOoG8Gr+0mG5poyrmzhIJ2gZetsvDhSUg 9BI4HNO2Ya2KjeYG+sFBfGfeJBAYbg81BgstPscXYSUTtblGBlW3R8dYSpD0xb5mS8spl+VhdDC 3Eyi1jA28rzmPeRic1GeilgXo2ivpXQ1UGz0YeY2OdeZ5bq39rMU95OrW8kxMNV7LqUcxiPdxrK +fmmam/m3oLoXNKVFHp0LsKRGjrxZAtCV1oUDuNsQJqoEgaj695Gpkmr0wyk53BDm+QyBQTKJ5a azgRvH9HAuBxKvtCV+7ZH9BC/fDFaMPQ1RHKQWg5aIVDBh6TePB9H7+5enD4z+jF2LEogBad/L2 GCZHbciAEbPm7xr2qYxHLMIgDFckOP8wAQjTjPZzrk8O6H/L1KbIMZEro0kRYsSBj/ofkZho6tT 2RFWYf+OCFS23k9vsQNHX6T08a2EQEIL7w6cyBp1iSio1pHhuMvlvnT1iKOkYXSPxDK1FPJmjOi NZ2QX1sApJPEihNT9LGA6nRo6KyHttwNCAeYh/bhtKB4gUErD3iL6L6N2RotJIEEZbbdzq5OQma y6IZyLYWBBndyZg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: vAXdIXv5YoZRCqvP1lejvmPQD4vBQdU7 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjI5MDA3NCBTYWx0ZWRfX2LdUTZ34KvF8 kbJ80abBpcPCLMkGKgEy+Uawc4Od2yq+qTvlggRLUvqly7tmCLbBBzHFXbpjVUwoI0UB0/Ew/25 JYYO5tb/hblarC959q5bD5EEhJmAK7M= X-Proofpoint-ORIG-GUID: vAXdIXv5YoZRCqvP1lejvmPQD4vBQdU7 X-Authority-Analysis: v=2.4 cv=PqSjqQM3 c=1 sm=1 tr=0 ts=6a423757 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=2sGp0kyKjRk1obZUzdUA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjI5MDA3NCBTYWx0ZWRfX/9DfpKGHlaT4 Y8lvbHLDN8OUEeA7RSOovvmBLJuUUGjQTjDgA2mfqOaC/BkJBrQmxaP+7OBU4U5D6oMJK4bSK1c C6oqqibfp0yH8Dlgl23BV6APWwRogoCiCwGpZoS951uNarL9GeDPF77IA6tkUqIP7DKBZf40MH1 TQw4LPFfo5omDNHLZqXtBWpBWsX0If9L3zWAbspRCzlgiEWuWYZJC7jTTUe78IUhWMrgHgQ+MIz qEMFj3L5Ql2+yGeSPUb594fsFzUWUBwPP64pfUYFThs+2bPebsg82wxMG0WQW3rz6TH4PpkxTU0 7kUu/ba4nSErCnC5gaT2f2uTIYGMP7mhUMo6nx4+yG1HrPwv4xvLHCWazWiAAVhqKi/BLdVdlwW jRh1qls2r/Xbv9pakRCPfYmSHFUgYvF6YBzTHOVsLKqdsG+LY0K2ya2J3/BS93Av99XqkMZ8e3E T0Hz1RKhkkdpXKozdKA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-29_02,2026-06-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 adultscore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 malwarescore=0 phishscore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606290074 When using platform_device_register_full(), we currently only increase the reference count of the OF node associated with a platform device. We symmetrically decrease it in platform_device_release(). With all users in tree now converted to using provided platform device helpers for assigning OF and firmware nodes, we can now switch to counting references of all kinds of firmware nodes. Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index f24a5f406746b53ca9eaab9472f6dd1345e04ad6..bb5f5bddd047d4ec6f238e36dfe4f4ea36b92a76 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -599,7 +599,7 @@ static void platform_device_release(struct device *dev) struct platform_object *pa = container_of(dev, struct platform_object, pdev.dev); - of_node_put(pa->pdev.dev.of_node); + fwnode_handle_put(pa->pdev.dev.fwnode); kfree(pa->pdev.dev.platform_data); kfree(pa->pdev.mfd_cell); kfree(pa->pdev.resource); @@ -705,9 +705,7 @@ EXPORT_SYMBOL_GPL(platform_device_add_data); void platform_device_set_of_node(struct platform_device *pdev, struct device_node *np) { - of_node_put(pdev->dev.of_node); - pdev->dev.of_node = of_node_get(np); - pdev->dev.fwnode = of_fwnode_handle(np); + platform_device_set_fwnode(pdev, of_fwnode_handle(np)); } EXPORT_SYMBOL_GPL(platform_device_set_of_node); @@ -723,10 +721,9 @@ EXPORT_SYMBOL_GPL(platform_device_set_of_node); void platform_device_set_fwnode(struct platform_device *pdev, struct fwnode_handle *fwnode) { - if (is_of_node(fwnode)) - platform_device_set_of_node(pdev, to_of_node(fwnode)); - else - pdev->dev.fwnode = fwnode; + fwnode_handle_put(pdev->dev.fwnode); + pdev->dev.fwnode = fwnode_handle_get(fwnode); + pdev->dev.of_node = to_of_node(fwnode); } EXPORT_SYMBOL_GPL(platform_device_set_fwnode); @@ -921,8 +918,8 @@ struct platform_device *platform_device_register_full(const struct platform_devi return ERR_PTR(-ENOMEM); pdev->dev.parent = pdevinfo->parent; - pdev->dev.fwnode = pdevinfo->fwnode; - pdev->dev.of_node = of_node_get(to_of_node(pdev->dev.fwnode)); + pdev->dev.fwnode = fwnode_handle_get(pdevinfo->fwnode); + pdev->dev.of_node = to_of_node(pdev->dev.fwnode); dev_assign_of_node_reused(&pdev->dev, pdevinfo->of_node_reused); if (pdevinfo->dma_mask) { -- 2.47.3