From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 51531346AE1 for ; Thu, 21 May 2026 08:37:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779352631; cv=none; b=Ej435OCqGJUUD+XDJ4sX2mp7ZsdUTzwDaxRmrGhVy6wvcwHrm0qjIvTGP04+EFpyxdhQsif7iuTxmwtudDGITaWdakqLozmyuYNzUrLZJvvAuRu/4UBnRmVp8Klhc6U5ykrZdmtxgjnAodRpFwWdmFcSRZeX/FIBFjdIHNwDtSg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779352631; c=relaxed/simple; bh=D3r2n74KWxEYfDl8rWFGKV6Wr7M1gfnVPwg1g1CrN84=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=qibsM4sSYZbGUakqzPLir8vYo4vuhg+yHx5e5SXgc6iPdeT5bTgpTGyjn8NFHaey7776KZb3DhoW8zfmG6heot09YnJKH3W8EOGK3keI39swcmsFI/Cnjf6BiniKyJWNNFcn9otCDvWAcyL8jC49y2H9ojqNYoaOVowNHmCs4Dg= 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=Trw38hpF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=E22Sb3nb; arc=none smtp.client-ip=205.220.180.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="Trw38hpF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="E22Sb3nb" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64L68pBw3110731 for ; Thu, 21 May 2026 08:37:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=El4wNMt9BXL9CxxtRdtqTV x+E6o7UHeoj7av7h+WfcI=; b=Trw38hpFc3Uxmsxjfu7cVuCmyXS6WZ39nWg0SE akyGensBif0/ULxQcPPBG9D7sac9jKuydsTJ4IaHQocxwctnByVKYnVB4mI0toNE SdpfJT9vOELGFzPNl9Az6o/kqZ08mXro8GaeDySwzyoNKFVZCLVkIYOnFsEo6KEF bJmt1M7ivhKwT6Vb+fDulepmbjEGwXUo82NblLrvbrDD/5b0quMl/RUmd/yH53xR P155WhEBw0FDk+ct73qt9Z1seTGTUP5Y4mlWPMO5mjtd4NasLjoDXfKeTfgsUzjo 9Obr2KNaswV3iLrbA/+wijZcq69LTkyX7fshpsA/vGZdUnnA== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e9vhbgkm0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 21 May 2026 08:37:08 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-8ca1295e3a9so87666386d6.1 for ; Thu, 21 May 2026 01:37:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779352627; x=1779957427; darn=vger.kernel.org; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:from:to:cc:subject:date:message-id:reply-to; bh=El4wNMt9BXL9CxxtRdtqTVx+E6o7UHeoj7av7h+WfcI=; b=E22Sb3nb4aDLac31OyOASlTXBUf8mjO1coxt5+pTCdyR1scRp/lKA1XQCa8IzAR/1b 71CA0Vdmwrpxel9udOeCjvLzd15TXx3+Vs+OkwRqvg1VBn58jVur+y/qFE/zqv83Fs+6 uiW/evDa7/VJwHXXR0G8ebEgQRC3Z+5z3WQsKQEeOSdLlnfwvnt7xCQHKO6gtF5Au0nk bF2hojYISxd4ZmO12W6ql11SwIVqUQ8poHWbFIU77m1jYSFK0a1Dg3LPOY/IaySxz0Q3 YmyrHql5Rgvag6MksUEscT5Sr+wrKJny/7s4JqD05KgtxjWAfiHASvRxgwXF+jQSG3CN NeAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779352627; x=1779957427; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=El4wNMt9BXL9CxxtRdtqTVx+E6o7UHeoj7av7h+WfcI=; b=YVQnyAZcAj3r2HRfrBfEoYmfG1L5hHQW6/f+n2OtiysxWmgm1azAv/U50twWub4DLJ JwQu6vjXtv01q3t1PJX9pHnRWJOrWqmNHXeKPp3uCHIVZsVayBY6Jpuns9SrpFjPG7fa hc1gRpDJBqDUY4w4hM1AoCQay5qNUK4vNMhlkDIFzubX0TJ7hTpwg/+sMVj2kOJF2Hly BIOpEUDToTmtJnpby8Sa6XS285QeUS1kFAe1tW8gG0N0smPGSMNd5VXf2pwn9zXVqxYL iIDsjgbstJfI7jzq1elrHMySBp8gIFaZB0h3G+o3jy5z6GReQWB1Ge+1Z/pouEtyS/Qj FHrw== X-Forwarded-Encrypted: i=1; AFNElJ/JzCOfwXKShpiT+N5xGOh4yBinDvX2X6wdwUhxKwnqAO6mk1bi2RKuzkXb5Hk5Z1LOmva3UIQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwfXnyTmKF3pQAvD9NwiNKArPhs/yvkqK9Gogje0yo7dg9ezS5/ DBOF2U/acg8B9rTGZCIGRKIRmYH65S13EdXVnuX863lVXG0ehb1l7d+EsIP0HsuIc0UH1t1hiiC ACX5S67xyk1cqpXr9rNRfLBeB6XpDFcwcDueLA8XcnJP05/trQHd3cPqvxHM= X-Gm-Gg: Acq92OEWGOpdRvAZYs6DzdSAoYYOEtS7m53MnEnMXwunrOnfeqSiQ3eH8z897/8ygMv ZyyNvgmKmul01+YGGHXKrUeFyFjTkvf/Yrth0+UKW2sjqZD8Ood1bm9tYwrweUJFPA3nE3PJa2I jqsSKxuufW3+id0SMZRSTNKPO4rUO+Wa/dNFa6r1anYxNaRRcsxax04FDqmqJ04qXpvz3vwbzS/ YGPzOl4+fNcD7hBDlcWlpMzBd57wq07ERDRJ2xRoPznotYlIwapGWygXZd9Cai67LInkaqXQyZj wUEQxKQbXp99y8y9dfWr4Wmxhr+japAKqy6gstqq/aWw3jQP2FPqupbJSu3hF+tMiBazHz+O6+2 9sQmj/02Y+rHi7qAQ+VJ40G75uvutBGcSXdPtwhrrXg6AzPZhEpZBjQxMf+56cQ== X-Received: by 2002:a05:622a:514:b0:50d:900e:c1c1 with SMTP id d75a77b69052e-516c5484841mr24415711cf.7.1779352627412; Thu, 21 May 2026 01:37:07 -0700 (PDT) X-Received: by 2002:a05:622a:514:b0:50d:900e:c1c1 with SMTP id d75a77b69052e-516c5484841mr24415481cf.7.1779352626922; Thu, 21 May 2026 01:37:06 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:bb10:ae82:b7c3:d15a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4903caede9fsm10502405e9.14.2026.05.21.01.37.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 01:37:06 -0700 (PDT) From: Bartosz Golaszewski Subject: [PATCH 00/23] driver core: count references of the platform device's fwnode, not OF node Date: Thu, 21 May 2026 10:36:23 +0200 Message-Id: <20260521-pdev-fwnode-ref-v1-0-88c324a1b8d2@oss.qualcomm.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAAfEDmoC/x2MQQqAIBAAvyJ7bkGNzPpKdKjcai8qChZEf086z sDMA5kSU4ZRPJCocObgK6hGwHYu/iBkVxm01EZ2WmJ0VHC/fHCEiXZ01vS2NUOvaIVaxSr5/o/ T/L4fVuIfJWEAAAA= X-Change-ID: 20260520-pdev-fwnode-ref-d867836971eb 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 , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5107; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=D3r2n74KWxEYfDl8rWFGKV6Wr7M1gfnVPwg1g1CrN84=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqDsQZF3+Wnnqse1OrX9tW8YslypJ8/2vlajEr3 JD2ATbv3b6JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCag7EGQAKCRAFnS7L/zaE w8EKD/9dgPJ3F9RbNULXnoMj4pWPfWo/PfTbl87hUlFmLRa5e+BZbCj7lym0G7cDSCBBxhP1m38 XDMPAP0b7y/NNBM5+VFFKiHSXL2ftnoZYhTiPCXqAg8yXpg2s9DUQx7N9NbBTjBZDPFloWIKRq+ KlrMHuxSs7HgG8kOBSK5eW4l+mXcdX07ZoH1zm3uq+BtSWd3lpPf2/lLKF+k5Cc1lpzbfNDEq7Z Ykm7Kfr1bDflSUQG/fhL8ilD15sZF0ffqDCywGL+UWcM5riCnkN5/v/BOF94pxi6LYD1XBlKs9t 9gnTDKdlCmzmuhXIMsvOdZbSYYaJdad0De3ClLQ1TJN9KZXrqkxtJmLL2WUv2kI+YgHoNhRxM/d DoZ7lw/sbJRbjlusrb2aLa4FDl776mKWYhsIxGgIm/BEQk8ttADCJ+lCw5QMO0KC5BvtqRFoazO pG82IvBTgo1DqWURzhU8JiJIsRJMdzSm/fNAHAdK3htZj4WBovzhar44MI2zYLwsIEOTWII1a/C zWJCChwoCsQXVVI4H2ICRncw83pF/8yG5ToHIO30PdXPpkq36sYUdxvG/qk/pmu07MX2Gz3GGPd 4HA7SKpoUAI1k/yCQzarBy1I3uysZITHV1i0mIHh5wtU/1mmf90cnXhXSuAnrIq3vTxq48wjVLg wrYHri/y1wYzsQQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTIxMDA4MyBTYWx0ZWRfX4b8oMfZS+zls 7loDSJLqNtMRhhC8XXWxs+t03HM90gyjNylpizb7Ywg91Wo0m49HYCkYv979bMsDZIPVSth7Ejj V9WU8BwmXfZoWvZRmIrPU9fB6+OjfshlgXxi5gl71LEi6N3R8Sx/84bBeHLWlf8HUQEv80sW0Wh YMnP8r64xuLNxNw6cr+hYd7Njwspow5klk1s08t+SpgbxeLQvzoL/TsamNZxhS4MIzwNHuzu3zU sRskgKr5U/05MW0dDtVbLzHjrdeezLR1FLEB416woB7KURTw1DL33kSlckSWTtYWO5YfHoaIKGC yPEDdng/9j+b7ZjvFZV04t1IUv9fevKjHFJteUxO4bhqeqqcLE5QKRXgu7KHErnOKlSQU3BxqKD bTqPkWPFKB0DtSQvyxcdINb3P/uPsYoFkOd5YW5U2Lvoo5AFn2rJ1xVtUtkhOtQok/L4TPoDanz z/AVCE8/udb1sy6NRrg== X-Authority-Analysis: v=2.4 cv=GYAnWwXL c=1 sm=1 tr=0 ts=6a0ec434 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=x7ldU9BvHY0adF9BoRAA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-GUID: Wmgx__o9r9SG7dfkdyL_PvrjNye-mQzn X-Proofpoint-ORIG-GUID: Wmgx__o9r9SG7dfkdyL_PvrjNye-mQzn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-21_01,2026-05-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 phishscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605210083 I'd like to first apologize for the long, treewide series and an extensive Cc list but I think it's important to show the big picture and the end result of this rework. Platform device core provides helper interfaces for dealing with dynamically created platform devices. Most users should use platform_device_register_full() which encapsulates most of the operations but some modules will want to use the split approach of calling platform_device_alloc() + platform_device_add() separately for various reasons. With many platform devices now using dynamic software nodes as their primary firmware nodes and with the platform device interface being extended to also better cover the use-cases of secondary software nodes, I believe it makes sense to switch to counting the references of all kinds of firmware nodes. To that end, I identified all users of platform_device_alloc() that also assign dev.of_node or dev.fwnode manually. I noticed five cases where the references are not increased as they should (patches 1-5 fix these users) and provided three new functions in platform_device.h that now become the preferred interfaces for assigning firmware nodes to dynamic platform devices (in line with platform_device_add_data(), platform_device_add_resources(), etc.). The bulk of the patches in this series are small driver conversions to port all users to going through the new functions that now encapsulate the refcount logic. With that done, the final patch seamlessly switches to counting the references of all firmware node types. This effort is prerequisite of removing platform_device_release_full() and unifying the release path for dynamic platform devices using unmanaged software nodes. Merging strategy: First tree patches should go directly into individual maintainers' trees and land in v7.1 and stable as bug fixes. The remaining patches touch lots of drivers but the changes are minimal and unlikely to cause any conflicts. I believe they should be queued in the driver core tree for v7.2 (possibly on an immutable branch for others to merge into their trees). If the subsystem maintainers object, the alternative is to queue the three new helpers for platform devices via the driver core tree. After v7.2-rc1, I'd resend individual driver patches to appropriate maintainers and once they're upstream, we can apply the final platform device change. However this would take three cycles to complete so my preference is the former solution. Signed-off-by: Bartosz Golaszewski --- Bartosz Golaszewski (23): mfd: tps6586x: fix OF node refcount net: mv643xx: fix OF node refcount slimbus: qcom-ngd-ctrl: fix OF node refcount pmdomain: imx: fix OF node refcount powerpc/powermac: fix OF node refcount driver core: platform: provide platform_device_set_of_node() driver core: platform: provide platform_device_set_fwnode() driver core: platform: provide platform_device_set_of_node_from_dev() of: platform: use platform_device_set_of_node() powerpc/powermac: use platform_device_set_of_node() i2c: pxa-pci: use platform_device_set_of_node() iommu/fsl: use platform_device_set_of_node() net: bcmgenet: use platform_device_set_of_node() pmdomain: imx: use platform_device_set_of_node() mfd: tps6586: use platform_device_set_of_node() slimbus: qcom-ngd-ctrl: use platform_device_set_of_node() net: mv643xx: use platform_device_set_of_node() drm/xe/i2c: use platform_device_set_fwnode() platform/surface: gpe: use platform_device_set_fwnode() usb: chipidea: use platform_device_set_of_node_from_dev() usb: musb: use platform_device_set_of_node_from_dev() reset: rzg2l: use platform_device_set_of_node_from_dev() driver core: platform: count references to all kinds of firmware nodes arch/powerpc/platforms/powermac/low_i2c.c | 2 +- drivers/base/platform.c | 56 ++++++++++++++++++++++++++-- drivers/gpu/drm/xe/xe_i2c.c | 2 +- drivers/i2c/busses/i2c-pxa-pci.c | 3 +- drivers/iommu/fsl_pamu.c | 7 ++-- drivers/mfd/tps6586x.c | 2 +- drivers/net/ethernet/broadcom/genet/bcmmii.c | 10 +++-- drivers/net/ethernet/marvell/mv643xx_eth.c | 2 +- drivers/of/platform.c | 2 +- drivers/platform/surface/surface_gpe.c | 2 +- drivers/pmdomain/imx/gpc.c | 3 +- drivers/reset/reset-rzg2l-usbphy-ctrl.c | 2 +- drivers/slimbus/qcom-ngd-ctrl.c | 2 +- drivers/usb/chipidea/core.c | 2 +- drivers/usb/musb/jz4740.c | 2 +- include/linux/platform_device.h | 8 ++++ 16 files changed, 84 insertions(+), 23 deletions(-) --- base-commit: 687da68900cd1a46549f7d9430c7d40346cb86a0 change-id: 20260520-pdev-fwnode-ref-d867836971eb Best regards, -- Bartosz Golaszewski