From nobody Sat Jul 25 21:21:07 2026 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 C1F9C348C5C for ; Mon, 13 Jul 2026 15:12:21 +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=1783955544; cv=none; b=km2O3ucG2Xi6JoJwtC7l2JwNJu0WNktncP6A67UyXG8RXcVkKbfAUa3v9AWQ+N8nx/9CPR0UXzyt7qhh8lqDGHnuJ+obtTunV/SP9ug4CfhDbOcNFwtUUv7ml4oZQPqgzcm8JNGBeAuSq0K22VU43/lKm/q8lphy/dPnhE69XEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783955544; c=relaxed/simple; bh=LQm6Ev5CsTQhlRz56Fas/rrihp1CyWWC4kaoHOMynUQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N2XmS5uPxQkT+/LNEddNJSUIvu8FdL96kgW4b0VOAeHHhUk+bV+0k2onTLm2bmz/Lm+UE9qgAgpBAsfFi8+IIMGnXOcMuljvH6vACg0pdOzv1BhpIfGIiOtDk0EmXsScULMBXSVuOTbRs0JJm20GMLH3acLdDB68tvQHpo/uDBY= 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=kVhFl7OE; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gP6ZbcyS; 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="kVhFl7OE"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gP6ZbcyS" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DF85HY1701338 for ; Mon, 13 Jul 2026 15:12:21 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= eOoTW+/8NGpy+8ODEceEWrPqGZMK7q4zSL4q7/aA1IE=; b=kVhFl7OEgk96yjT0 mVa7TQ1oKGQVR5q7Z5d4fj/0gvy90stsr5AfLefa0T/l7KlaefyYpWa0WmBtfu+E zqF7CklezR/HLnVyafxC/A5ziJlbtdPJhYPHDYJcOcl2skPAPWU0+e3Uv9BtI8p1 QwOVi88Eg+VNAyoujSh63u86B1jd6OSNCluOen+U2twkPTsJ0tw7HHkGCcTDSI75 tafXva+tO9SgZkl0XanV/Es/3IlVulUIlB7U3uY2BSGAXlLjfKGYPJtYHnSNeamk JwQBpf8mItV1BETpKA5mSrSXTdTCGOtk5AOWg4kw0Qz8Fer+LwC5Nx6QlNdHkuXh FaW4aA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwk3ha0m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 15:12:21 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c083f1818so45721601cf.0 for ; Mon, 13 Jul 2026 08:12:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783955540; x=1784560340; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eOoTW+/8NGpy+8ODEceEWrPqGZMK7q4zSL4q7/aA1IE=; b=gP6ZbcySq6z78nRNXfYeixVSyE13eZJodcKbTgOKP+kmM+NhmR7Le3UYExbKOJYA64 gXOZOY7+ZZjr0lUviT/yFc/ammDpGuiBnOyhBUX3Y4PhU8QoypIySOgl6biQ1X4JmczW 9uWgJLrLGQ8BCnmCBURJaO4xL0R1tPqnxEMcsFPZ/ikvl+0kldIzaRQ5vXL4WNhxTvJj sq8fKUApN0MJv4vpw9DeCAIQTjxpVbpmGw3YnvIZ+YNJkoaVyB+obYXlV/EpK1GvkJpd +56cjQmwpWLQ8yifJfLCa/dbe2QEIOMYg257GdPr1+LKzCdEBISSFbTmDMkwk3qIXZVf +OEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783955540; x=1784560340; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=eOoTW+/8NGpy+8ODEceEWrPqGZMK7q4zSL4q7/aA1IE=; b=LQe13YThbTD3Z0Opa6QDvD97/MQaupmTsNvFDLO4EcJcVriJDMiT+HmOVbYnwjjEwP ssaVtPE+S9qxrvqNktTyPHFTssAdwLhKhYzAhAoPGDCKNtJUWpJmEQGzPU8y/ZIy9yO5 pTkZSZXu5MPx8Oh09AHCFZwciNqgwVwgH0YZy2zkrQnR9/9vqVcYWGp8rPBwaKn2zNk3 gPGN9MvVkTFBt1/sdDvjraXfRjO0JYDM+Xxfezh88jM6ATRUTeKveB4Ux9vkAsC8cjq4 iPhiYBJkN+9MW1WcDUOi9m5HSXVYeX0yTv0+msHKDs3cLP35VzFSX7xuWse3zT0PYB+4 hJ1w== X-Forwarded-Encrypted: i=1; AHgh+RrDnmq1AHNbIvoIRBz/OFK3d4B+jlF2qCRBOGA7XaTo8hbFXsG2nBJCKqrJXNY2tyoRrJhHNZ3sKVI8uas=@vger.kernel.org X-Gm-Message-State: AOJu0Yz7QA7FpfgChleumwc6lBVEhGhs2zuD9fg+lV1jzslM6t4JTYK/ hrr2QDQxCWwtdvLRSyUx2u7+blYpL4IGH9vuL68AGLj7rYH5Ncey8GAEPw4wT0Yul6OhHesutsa MpqPOoS7PjrawWCMYDvfhOrZQorRZKMmmGla+xj9A/EVobyCK4miO8cwxnPuBEby5Up8= X-Gm-Gg: AfdE7cmeMktTLCu6RCMNeEoeGU/nMvFd+uJfLJebjw+ddubm+lZmU70Lrlzzxa+hFRL PoAWO2USDfKWvbfvbaG4NnHzlyn1mep5TbB30oPOmi8k8CkVeOOWSp5SzzGShm1sA49LTXcV1Ho oOeW+dEMPpskdDs5mMdqlAY6wr9ESUdmoQoWCcIp2/1Nneb3zlBe3jsP1JRK2MAm0hwvdUfDcHE PcshUVUZiPUn1smkDMllSQP70aGVEOwORMf0g79I2umgUBIzcclehVOpf/KbAkUwRsL5XDm4orH KvnmNAq7LCmXxqVIIb1ulG28ahhOiLAqp/s7ZT4DBNfg4sexD/TtUR222utm7M537ahg6JwVY34 DlrirVPfxd6uJd62n7RfUTzxreP3eO+hnCKWvTXya X-Received: by 2002:ac8:7f13:0:b0:51c:7b12:5ff7 with SMTP id d75a77b69052e-51cbf3fe1femr91662191cf.83.1783955539984; Mon, 13 Jul 2026 08:12:19 -0700 (PDT) X-Received: by 2002:ac8:7f13:0:b0:51c:7b12:5ff7 with SMTP id d75a77b69052e-51cbf3fe1femr91661821cf.83.1783955539511; Mon, 13 Jul 2026 08:12:19 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:8881:83b8:89fa:1a2a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0a558easm87956664f8f.27.2026.07.13.08.12.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 08:12:18 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 13 Jul 2026 17:11:57 +0200 Subject: [PATCH v7 1/4] platform/surface: gpe: use platform_device_register_full() 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="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260713-swnode-remove-on-dev-unreg-v7-1-6d6bc448427a@oss.qualcomm.com> References: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> In-Reply-To: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> To: Maximilian Luz , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Matthew Brost , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Rodrigo Vivi , David Airlie , Simona Vetter , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: brgl@kernel.org, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, driver-core@lists.linux.dev, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2532; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=LQm6Ev5CsTQhlRz56Fas/rrihp1CyWWC4kaoHOMynUQ=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqVQBKTlNOxz9cwYCiWhHNVnX+m3dvLDS8Snmnt ETAtF4KuRqJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalUASgAKCRAFnS7L/zaE w9NMD/wPsPGJwatR1rnJxCsUwV8L2KnB0IOZCNjGmdn84DwM3P/LtTWySo2BWVUdFlYN2CT4C/4 qrALrOWSlxzHLkMEPGkh0MoMgPmKjiYBkP0oQv/KxaLYSHUPHlWe4bq2Bvr2eO+JhDlCp9QHCaI LbqLglT5jrB6MurGhsFyEG8JkvB2pQRRi6qeipTPCFKhb0xQDx9xYbr/YRo4d1rU6t6duVDPj2S 5IikQmv2kkx18DfbXcTAajxBl/vwwaUtxgL5S96fjKPnDsS8oj18iqwl+dcsOYDuei69Q9G99Nt d9aleGx1WW9Cs1vkgJbYYNx/224EdKSPh53xAPSBJQFeDN8Nb+JwkJrTbkc5HdeOOrELH0A5sBR hZ/Gh79aWzuh7wVaprBxLAZ8qaRlCm/sUwO53O1gqYOzGoiOGEi1SKNvcVer1jxB2L4EAx3RiOY K5kUWFHarCHNYYLbDfTYx/ih07WFJ7Er1LBkD0Ad/GwsxZXwZaAETTRq/7gSxhw812Wmy24UZwa AaFmkkAIOahLpJv8+0rvCXfvdLMS9OY6nF53BBnivWQSeAPRAT68B2A2GDcG+0U+WPuxXDTgv/d GfqrTmQ6PQo+Mo+NQhZAzHVOCqFpZRuiS3MWrfByGlLAl/Y4mUe+YUw3LtSRR65BUC/NVXeiOAC SXu9YrBLHre1Veg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: ab0IkqPsmy_RL7TXDTxfA1ue924qWFl3 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfX8mZpsc5/F1eS Iif1ZrRXqLVUQAgPa2ibUpCsaF5EjbHgkJWnSN+qh+MoRmTkBvTCyQO6cl22/zrixiXpF/zqpGQ EALqqW/yKvrWCq4DTxrypZ37vbeNEx4= X-Authority-Analysis: v=2.4 cv=e6c2j6p/ c=1 sm=1 tr=0 ts=6a550055 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=vKDqCkOE6BQjc6v61vgA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfX/ydCKRCepyyf eKCyklgEq93O3+1SLBdWDxdJ7CoVpTPqv6pC54d36fd0ZcvOFfnQ57QFaFM4sbPZLduf+JhpKJt slFh5Zq70A6ZhToBJO10aW5HXz2UOcreb6xm82uFL5s7FTjlb8TQGQDc/bDPUxeBQLdjbsnn5wR WSK/AHH0uIT/c0W9faZTap3fhK6QsgXARA7cqVHd6ERO6U1iab5HrnjyuflTIk/RlVAjE/uop2y CHK6YXLK/gYO2Vo0dA9OOWB+r7J9jGMRsXgeGPbXhwUTiSEL18IDit/5DuRnjn6MKr6ClpseGjE qvwAv1zsIyZuhbYsgnFAWOlqirPot9KJUm4wldVbhuRJmUj/xTCvxoiQd/7Bou4Hmk7gLwLo2dv 53RvfJkcHnvmK3RcRFX4lYrJPMGsXHvGz13LuDxrIw+EnmWeb3zd9cMMR8+XTn20iGqDeLRMIbl BCsoCsbxSfAeY8hPAHw== X-Proofpoint-GUID: ab0IkqPsmy_RL7TXDTxfA1ue924qWFl3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_04,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 phishscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 malwarescore=0 impostorscore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130158 Creating a software node for a given set of properties and adding it to a platform device can be achieved with a single call to platform_device_register_full(). There's nothing in this driver that suggests using the more fine-grained interfaces was intentional so switch to using the high-level helper. Signed-off-by: Bartosz Golaszewski Acked-by: Ilpo J=C3=A4rvinen --- drivers/platform/surface/surface_gpe.c | 39 ++++++++++--------------------= ---- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/drivers/platform/surface/surface_gpe.c b/drivers/platform/surf= ace/surface_gpe.c index 40896a8544b0a4da4261ea881b1eaed62d93b32b..4ca7ad76f3b9d2b6c455a5d5b37= f23a85eb69c69 100644 --- a/drivers/platform/surface/surface_gpe.c +++ b/drivers/platform/surface/surface_gpe.c @@ -290,9 +290,9 @@ static struct platform_device *surface_gpe_device; =20 static int __init surface_gpe_init(void) { + struct platform_device_info pdevinfo; const struct dmi_system_id *match; struct platform_device *pdev; - struct fwnode_handle *fwnode; int status; =20 match =3D dmi_first_match(dmi_lid_device_table); @@ -305,44 +305,27 @@ static int __init surface_gpe_init(void) if (status) return status; =20 - fwnode =3D fwnode_create_software_node(match->driver_data, NULL); - if (IS_ERR(fwnode)) { - status =3D PTR_ERR(fwnode); - goto err_node; - } - - pdev =3D platform_device_alloc("surface_gpe", PLATFORM_DEVID_NONE); - if (!pdev) { - status =3D -ENOMEM; - goto err_alloc; + pdevinfo =3D (struct platform_device_info){ + .name =3D "surface_gpe", + .id =3D PLATFORM_DEVID_NONE, + .properties =3D match->driver_data, + }; + + pdev =3D platform_device_register_full(&pdevinfo); + if (IS_ERR(pdev)) { + platform_driver_unregister(&surface_gpe_driver); + return PTR_ERR(pdev); } =20 - platform_device_set_fwnode(pdev, fwnode); - - status =3D platform_device_add(pdev); - if (status) - goto err_add; - surface_gpe_device =3D pdev; return 0; - -err_add: - platform_device_put(pdev); -err_alloc: - fwnode_remove_software_node(fwnode); -err_node: - platform_driver_unregister(&surface_gpe_driver); - return status; } module_init(surface_gpe_init); =20 static void __exit surface_gpe_exit(void) { - struct fwnode_handle *fwnode =3D surface_gpe_device->dev.fwnode; - platform_device_unregister(surface_gpe_device); platform_driver_unregister(&surface_gpe_driver); - fwnode_remove_software_node(fwnode); } module_exit(surface_gpe_exit); =20 --=20 2.47.3 From nobody Sat Jul 25 21:21:07 2026 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 EC9943769F6 for ; Mon, 13 Jul 2026 15:12:24 +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=1783955546; cv=none; b=Zixk3PhP4cpG4Zh0I2AYIjFox36/X87u5vjefXwAyVEwWZhmvZor6SJv/78c05sRhx1gB+ALKdQGFHcwY3gd+hM9tN0A2BrgahpaVbS1ksjicM5wOC8f5D3k2NtwtcBF2+vyYijaJHg1AIo/yrmpJAA5fX5dpkH94ZNkBP9D4FI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783955546; c=relaxed/simple; bh=K59bsZsPg0oBc3El4NBYgpsIGFNwewCJ8H6R3I7pL30=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y9CexzaVU/nSj18Aa04kjXcBbvBQR0PkZKndj2Ha5vdZKN5nSH8yGsoZlV4rAZA+hNRMttJkNYXqKIPxpd1qy4jT8iOiHwb9XOdXOoDfKJNOibFQP9kbVAApEot+GiSiugmYOE+2RiwhclpAcAd5QAr3XtMl3riI0Lvg080BsK8= 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=BOCC5f0U; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ap/oaqgn; 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="BOCC5f0U"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ap/oaqgn" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DF89nk1968293 for ; Mon, 13 Jul 2026 15:12:24 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= 8K0JIquvs3cxPSyDd9QX1UWRoa9KdPTnlm5VgT6UzpA=; b=BOCC5f0UeMABLuQp /DeFIlYIp1dkCmGgfkTYCYsNLEXzLx+6TaIqcIl515s8AIhWOFmrK9qi5YidC9/X J+Mx6zXNaWuvsy2Bn2EHvCBTcZIpE02rGregTh/MoZCdrCvM8pyWnHjD783DGi7E cWhX2PYM657cnGCMBOgo8ib2BjV+PYoA7fWe0Fll+9vg+5IqqxbdqOv6WSyoCS6q IIn+jNGjhhGYHZSJBU3pmPDyhVWdDlWW0lXDnYYdY/RlALFZHPlMksAG38ypUR5Q Sh+B4eCOI5LK9plwzUpJzI8p23QZPidPEXC01VfV8MfImK8kp6kidUu642NJHS9R wq9bpw== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcjn3b6nm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 15:12:23 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c21c01cf3so64189061cf.2 for ; Mon, 13 Jul 2026 08:12:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783955543; x=1784560343; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8K0JIquvs3cxPSyDd9QX1UWRoa9KdPTnlm5VgT6UzpA=; b=Ap/oaqgnPDb5P+7cQ7HM9fDnrHAnPRtyI4o5sknyRh2Y2TNLxtc7LrGufYKDhpKWvY yrRiyIOHDx/SWZ6jnmVkcHRmOYA3wOSvsrbu17q1cq1DV8QhueBndLaRecIkeikCNScE IH9Z/ApSBSDSZX0kRscOoTKvbcKIvPITOcN4VZEBPN4FbnohKO9U4iilPoyQUrwT9fu+ j1BT8n+oPnaifYz9YTkiFiyRNJBO9S4pSKDd8UP1S0FShVVlsRAqpdl01P5FYkTQeJPi DGD9UohhTlBcMFbDymoy/YBqqeh67dLJ9A0tqDJLefr4L+GggE6Ne9DWKfyvC4/NU8Y9 CJig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783955543; x=1784560343; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8K0JIquvs3cxPSyDd9QX1UWRoa9KdPTnlm5VgT6UzpA=; b=XvXxcCCqOQNIBlNilw+0Qv54h6gHEsMWt/tMJfA9OrtUbW9kURDcGsifirxFHSbaru vI1RH97oCY/qNY4LN6kyS9i3HkvVLR/2g0OynhzQU7KLHbda4x3USKMMjyfAW7RzzIsa 0Kl7AtapGu4/hpmgJ0louYPPoaQmFxGIj3gvk4h5f1PbXavHUf/1eHDujCtI3s2X18EO 8X4NH6Q/OJ0lR+xcFtWzeEYHu74aDi5eZ/MQnVktBGm0gc84tX02+GOkUJI/pN4uc/bs 9WPy+BQ0QEmmxHqUNObxdjp/Tt8qqcw3HBnKT1bX2wB4bPSZB7jrJe6Y4gdEMMpmf4TC dq1w== X-Forwarded-Encrypted: i=1; AHgh+Rpdc84DMMQR69re57Hr948yJ51qyCkxyypCnF00kpWut4/pnu/q0kxDFBeEDtp6waYoHKV2j8b0UbG7Cq0=@vger.kernel.org X-Gm-Message-State: AOJu0YwiiVvHvTKzbPTYZxb30H2XFTLwhfJsC3ZsC1P+SKDDQZQTMEJ0 0ucm2beXAIsuIDGJ4QR7wSVefKZXXEJ8PUcRbkJoyU1IotzMutqv5kFNnrzlShcCbi0/50ZAbg3 0aO0v2EHS+8OtQMmxWYHV55EIv5jPHH2VFAUF1WfXlpxs597DaasdSvkwrRWyM4qw8qM= X-Gm-Gg: AfdE7ckehWYf02SAleMlT2BpdOULPF0GwUjgX9zZCqbsi6N8x15cYroJQN+9ZxfrTwz dbJOmNLQxUdGtAabxPG8q5NOEuhG2YNc26CDW+C0onGuFDKops7S7JT9Li/6R5NSNg6Zv4ZjpoA THJ17rtjQhALikiz0nVtfiS7mSraksFNCrD27I7MP8apznAkaBTrh87jUV8X9FclOQT2o5Gkgrf nyugxYqRnm3E9fopROY6m5HRlPFSDAC2t+YTrz+uQ4Li8HCaPGvJn243PVsEHOuhWH7v3gMXVQB 8mjb4iPIgZBkKwQy/aaN89YgcGEcFN8JxY0shGce7EitD0vsvYPhvTlips89oOFWuhUl7FusDGj /nYvArS9LDJkxQoaDVTXXRZZnDf5tjKjbtgqsAhmq X-Received: by 2002:a05:622a:10d:b0:51b:eb55:2916 with SMTP id d75a77b69052e-51cbf162a37mr95302321cf.34.1783955542506; Mon, 13 Jul 2026 08:12:22 -0700 (PDT) X-Received: by 2002:a05:622a:10d:b0:51b:eb55:2916 with SMTP id d75a77b69052e-51cbf162a37mr95301891cf.34.1783955541957; Mon, 13 Jul 2026 08:12:21 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:8881:83b8:89fa:1a2a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0a558easm87956664f8f.27.2026.07.13.08.12.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 08:12:20 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 13 Jul 2026 17:11:58 +0200 Subject: [PATCH v7 2/4] drm/xe/i2c: use device_create_managed_software_node() 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="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260713-swnode-remove-on-dev-unreg-v7-2-6d6bc448427a@oss.qualcomm.com> References: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> In-Reply-To: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> To: Maximilian Luz , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Matthew Brost , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Rodrigo Vivi , David Airlie , Simona Vetter , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: brgl@kernel.org, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, driver-core@lists.linux.dev, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3069; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=K59bsZsPg0oBc3El4NBYgpsIGFNwewCJ8H6R3I7pL30=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqVQBLHe90K6lVmtYl/c5igcZli7qp/jrWQWKZt nDmast6tViJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalUASwAKCRAFnS7L/zaE w9u+D/4rljpC3ahmszRx6QX+sN3PBN42YyT4ut7PwFuo5riz9VlF1xvazJvVY3hozqhuIWxlOtz Md9ESdszzAvd9ry6gerI0QURYd5Pu5ZufD/2fJZ9Yh1Q2OjnICBZwmsXuGHtPoyVIPA62doZmCH gYMnwWXUrh2G2HXZeszXq7/yrbuOnVW4FiHd4InX54iZ93wcck8ACxvX/WpPc72TFr1kCt19TEi ld3BMRR3Cl97tXhUGsYr+KbkCpELBTJHGZ28dquEd5M2BZDM0fGeWCQB3xSjOs8zwHfX4FX0U22 XQfGMhYnOW75lAO3QEXIhEIPwivnWn7kh11TxvdB9iCVaV0d74Zs3GSk+4yWHQhfsxveaH04iGA Qgc6B43zyL5o5/J0FsRTf75X7Jv8YZdJ7W9Oe3uIBSEvEfp8eFOg3CoU5Wr4D5MlElEfXWRL1ai jv3K3ciVTZavQ0G8xTkbynioZLTaCO4zzExp2fpoXB3d/z57DwM9OL0pKQkcdeoumhu0QmU5t/h e9o30diob7Dq12Bt00bW4YM2eV2iJXSDVDfwTT7HOXfQG7J52fmMQA5lgIkrc8XxCIGW6q0Z1n/ gL6qtyzAXt5Mfpu0NyYdZSunKhyhX3z6Q4PLn76W3B0Gy3XZV1LObT4A65zPrhge4y9XbO8uOG0 wNfJxiV0NV2rJiw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfXws9uqSqaUh83 cNyyfMrLhL3+TnMynMz2Gj8/7W/E/EXu2zPphN4t2rtAhPWJt2iaWms193r6tqCG2wes876maO+ TFuMZ7D2HUEa6cFwXG+fI4dIkjEa7j+vZRuKYeHdEI6lv+buO9h2ZlV3XGpcPq0C/xmWB9LTZ7a 7P6nJXdi9fZ6YpIma7bunCzMscahevZ7LZAtlWstAYWPdpWbnneElkKxiPkvHijspi4iPQ59KHS oUgFBFA7XElyvgsqOCTQjATIZKorZ+onldAsadzab0j0rEJTOZWnJ2NyRFdDMOb19ttGVncNpxT FPYWG8synSx8V3x2UvqU2sMcqElnWbKXVx3p9kR2hpFfB2Q5LOJ1gApS96BJkuk0o3YH8B1Rhqk rX+8DV59d8m4bNSNE6034HtXetO7k87zhoGY6k/MDPInBplziGEr4MICNt4Rwz6q5LMVKz8LfEC t69L3imBx0Ct9wR4o8Q== X-Proofpoint-ORIG-GUID: Paa35lhH525MsjbsElkhf7gpKxSkaSuc X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfXxBOJCg8d2oMG M+uSejQnMTP70tXlHQgLShaeKhX/vRLAnhY4R/l+GLvgDjvIgB5iGau8CFhoLxlITYkfcfFj2Vp JmRCfqN4uFDh6mYvFIodw6PrEDGaQ9s= X-Proofpoint-GUID: Paa35lhH525MsjbsElkhf7gpKxSkaSuc X-Authority-Analysis: v=2.4 cv=aaJRWxot c=1 sm=1 tr=0 ts=6a550057 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=CQ4qV2wi1td1G5PDrAEA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_04,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 malwarescore=0 spamscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130158 This driver intentionally uses the fine-grained approach to creating platform devices. It assigns a software node as the primary firmware node of the device it creates. Ahead of improving the reference counting of platform device software nodes, switch to using device_create_managed_software_node(). This way, we create a dynamic software node whose life-time is tied to the device to which it's assigned. Signed-off-by: Bartosz Golaszewski Acked-by: Rodrigo Vivi Reviewed-by: Heikki Krogerus --- drivers/gpu/drm/xe/xe_i2c.c | 22 ++++++++-------------- drivers/gpu/drm/xe/xe_i2c.h | 1 - 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c index 3d80eafb9a1318996d10db11e14af4cfde07ba55..af6e973e5e68125a9c006bb6464= 47ca6e377a6e6 100644 --- a/drivers/gpu/drm/xe/xe_i2c.c +++ b/drivers/gpu/drm/xe/xe_i2c.c @@ -93,13 +93,8 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c) { struct pci_dev *pci =3D to_pci_dev(i2c->drm_dev); struct platform_device *pdev; - struct fwnode_handle *fwnode; int ret; =20 - fwnode =3D fwnode_create_software_node(xe_i2c_adapter_properties, NULL); - if (IS_ERR(fwnode)) - return PTR_ERR(fwnode); - /* * Not using platform_device_register_full() here because we don't have * a handle to the platform_device before it returns. xe_i2c_notifier() @@ -107,10 +102,14 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c) * platform_device_register_full() is done. */ pdev =3D platform_device_alloc(adapter_name, pci_dev_id(pci)); - if (!pdev) { - ret =3D -ENOMEM; - goto err_fwnode_remove; - } + if (!pdev) + return -ENOMEM; + + ret =3D device_create_managed_software_node(&pdev->dev, + xe_i2c_adapter_properties, + NULL); + if (ret) + goto err_pdev_put; =20 if (i2c->adapter_irq) { struct resource res; @@ -123,8 +122,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c) } =20 pdev->dev.parent =3D i2c->drm_dev; - platform_device_set_fwnode(pdev, fwnode); - i2c->adapter_node =3D fwnode; i2c->pdev =3D pdev; =20 ret =3D platform_device_add(pdev); @@ -135,8 +132,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c) =20 err_pdev_put: platform_device_put(pdev); -err_fwnode_remove: - fwnode_remove_software_node(fwnode); =20 return ret; } @@ -144,7 +139,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c) static void xe_i2c_unregister_adapter(struct xe_i2c *i2c) { platform_device_unregister(i2c->pdev); - fwnode_remove_software_node(i2c->adapter_node); } =20 /** diff --git a/drivers/gpu/drm/xe/xe_i2c.h b/drivers/gpu/drm/xe/xe_i2c.h index 425d8160835f4648891ff75f2a9c06284241710e..b28229f056c5a664e1d41dc0cc1= 978782fe1c2f1 100644 --- a/drivers/gpu/drm/xe/xe_i2c.h +++ b/drivers/gpu/drm/xe/xe_i2c.h @@ -30,7 +30,6 @@ struct xe_i2c_endpoint { }; =20 struct xe_i2c { - struct fwnode_handle *adapter_node; struct platform_device *pdev; struct i2c_adapter *adapter; struct i2c_client *client[XE_I2C_MAX_CLIENTS]; --=20 2.47.3 From nobody Sat Jul 25 21:21:07 2026 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 C6B68376A03 for ; Mon, 13 Jul 2026 15:12:25 +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=1783955547; cv=none; b=a5t4+v0txmZNILlDwxeXYZajCvM7ZeOC+1CUNbNoHeF2JTCnJPuU1NiwWALdYr1PJQhhibAb3RLU3WiJ9Y0kgnPNjK0xQMXYWSHXPV7y09uX2q1UgXWhMylGri/EnuS35quUE+HkhLqGGh5XsOqeBTGdSskjEh4ew4zzwy9Z0U0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783955547; c=relaxed/simple; bh=sfNhb2R8s/6yKt4BPY7jMkwV/kl2zg5+s7lGbts3IxA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ROeKbgmZ8mb2f/2xI81EBHwkwMONdudsagc8oRTIJRlOoIm+jANYnEOvItax+aYxUseYb6Iei062d5QsBXFmpGwbgX7dNbmcfJZnRybP90fnCH1BY+NAdmCUg5oOZIqYVUUd+3PAHOuskLZLfS2h+Wpsj0Tf26h99dVjdSxYb7A= 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=Fk86STtQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QLflJ6wN; 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="Fk86STtQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QLflJ6wN" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DF8Dip1611664 for ; Mon, 13 Jul 2026 15:12:25 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= tVr5dRf8jqbsYQUjS230GnPY/TS/CzublqdJwnQejdE=; b=Fk86STtQkF1LD7T2 ihKoY74MW02xYdI+Hk3AArC5I0aBw72cFqVeGI6Qn8XQQhNBU0PXYHompsgzaeFO 2f5Shemhn0w7N8qTh73P3HxuvpxIPIc7IO7P3fGWCLhJtxk3hTbbF5Hi4yXOidRJ TDHh7GdjVbHV8TClwkoNhrFuT85q33+B4g2JcX+jWsZKVK1YEntkXo3tWFJfoj/c VmavKg0PZKQyc6jo+rv+aROR5Jq9ZoWmwWPXP0uSYzKAUw6h/XL0TfbxPJHtGeDb p0wsm7xkr1uKryrOjfPYsdr74QXrkPGe9+jAr4yDumT/5JVLL8eCd21QyhARa5jt gzpijA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcw4qsdpt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 15:12:25 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c0e702df8so36159491cf.2 for ; Mon, 13 Jul 2026 08:12:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783955544; x=1784560344; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tVr5dRf8jqbsYQUjS230GnPY/TS/CzublqdJwnQejdE=; b=QLflJ6wNydjb9dBEQs91slzDDVmWKoyLc7hLU4LWqUBFptKHk0VYVUTiLRo/md+596 ALj7LzcmMoYK8bUIanroGG1nnaaFaRjjy9pCtTm2blAvkTY7JfDvS0HWnA9bbKuHxbOi pT7TiMqNhbUqGEoZzUwDG+HBkl+7u/l0y2znDuCQBgvnZ7FyKON90ILRSuTEynb4wsa3 avNk66l9bLj5643v4EFPFZ9vQLsrA9Fa4lLgzGz5lJpMu7gKdNEQOD7lMf5lS1Gn57pQ Ew8BFo33Jw2KnvGpqOVx8kFdC8mknPCEMpvoOw/3OQX4uGqPeBSLidqn0MtMeWUebXka FDog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783955544; x=1784560344; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tVr5dRf8jqbsYQUjS230GnPY/TS/CzublqdJwnQejdE=; b=DPQJHSSceHz9GFvFyCCU2tE08zIJioKGGjP4Vm6t1BUYn9Jzvu/9BTXWuDN8v8yk0x Piy9C7aE7AMSh8gSFVu/a98wBS2pP66KY7Z8oNE/FtjATz0aRLKyPktfwtsYSEqc/aZ2 ocEIo9eoVDo5J1IWQNevwAyJNPU0cyhaPXLA/AiORx1CfDezrnLTqkkuA5EsKEvYR7t6 dVUz3KCvzq0TKBEt4x5tTeMN3RcotpSDcM87+KNBuJTcRpMPwAggNLoJn8mMUQtOWqWS EnTYP1C2QzeTI6vTmQQj3d8d9OUwi52wE8xSC4U0eauPgAqZsaKVVk8UiEqxOa6knlYt rNEw== X-Forwarded-Encrypted: i=1; AHgh+Roj5B5fpa+L0JkqTwSTe3WTuPkKgWCxQjO2G4anADu/0dgRQNnaasGhzS9li/tWExkEGonFNE6uPgBkAiU=@vger.kernel.org X-Gm-Message-State: AOJu0YysMcy67DOS1LPgXg+rr4G8RNRhMItV2fTOtYSg/ZvbkCWKLaeB MZjjy+PgVtKz7vBUIZJ8w13+RjRDo+CWANqE+lxugZeYUicU34wUu5Q1lTuAMY7F4u7sVfGvL97 NcMP1b0p6KFUNxYij07Ejaw7mWhO9TGMmuRKa6eS1Hs6SpkDf0CmrJ/aWYrHtlBxlN58= X-Gm-Gg: AfdE7cmIlnhu/TaBqPZDCZlP5lv1R1LY0F1j8s1KS+zKLo9PWSWDaoC/2eMv4FYn5eY Mz5AFa7TZUm4rNK3+SoyAuVfurLGAtoWyp/IW6pzkkeDaiEwI9Mth78GQxCFEESBfaXO7UELhNa 82YzbUo1W248Gunwgne/ySUJ9rFWc0O26mFNhWKOJewuVuOpZ3WQ3Y/F/OhGtXcdXDG4Gf4yCTD jOaT1kEMcJIC53+hvA1/pXr5MldqTU72rEXkHI3MhA1rJMSk2OKXrvCQM6Xig67BthqdkNftcta wp2MygM46Gdh45j3bWewRsuRRglxbVY4N8WMKzbzRtzVIhrzlkAdt8s/6p40Zo2J4KGtfnmt6kt BDgSv3MiQi8iGj9lX2ez2xsEdPA4feq8WcY/BrLLw X-Received: by 2002:a05:622a:38b:b0:51c:11aa:1cd with SMTP id d75a77b69052e-51cbf20254cmr92718671cf.50.1783955544107; Mon, 13 Jul 2026 08:12:24 -0700 (PDT) X-Received: by 2002:a05:622a:38b:b0:51c:11aa:1cd with SMTP id d75a77b69052e-51cbf20254cmr92718121cf.50.1783955543604; Mon, 13 Jul 2026 08:12:23 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:8881:83b8:89fa:1a2a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0a558easm87956664f8f.27.2026.07.13.08.12.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 08:12:22 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 13 Jul 2026 17:11:59 +0200 Subject: [PATCH v7 3/4] driver core: platform: unify release path 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="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260713-swnode-remove-on-dev-unreg-v7-3-6d6bc448427a@oss.qualcomm.com> References: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> In-Reply-To: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> To: Maximilian Luz , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Matthew Brost , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Rodrigo Vivi , David Airlie , Simona Vetter , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: brgl@kernel.org, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, driver-core@lists.linux.dev, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2372; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=sfNhb2R8s/6yKt4BPY7jMkwV/kl2zg5+s7lGbts3IxA=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqVQBMkeWmMCvmewYOj8J1fRY0qezWMr55m63rs XwMM+Ug+rKJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalUATAAKCRAFnS7L/zaE wzJ3EACVzej+VwkeVnB5DJG57mn9yd2KIxtjlxZdjJi6jk9SdHkz51frdxdmaZB0HOwIMjI2qT5 QHx9D0OiS7SLaC0Soqt7lOgyXIiFNJ3dHECznM2oladKUsTzLOOJZv3dDPkWajJOZ/5Dpdn3W2+ 8Yj7woq3cc+2xy7F68zqec9f6piDO61ZOCiRoKoOwN5F/fzmA5roxFCGMXG0kTnJC3qLYli9Rtq ksRRiLQ4xSLXtBNTFrmlGbUefn3GxekVpbQDhTko0LXCi4100tXUrJRrcLGsDIvy3ZyCk323Dtn s+uAezDzW5w4aZumcwTOigoEKb1PMuohjhcQuaz5WbNEk3QMi3GyrDCsHfZZeIavvh44UABOQjZ MVcgMuX12ZhA5O6Ipz1E1oXcMBq125MGO6jYWFgjg/kkZoGTtIJUYNReui87wI44rZJP9/+MiSr BPu3kKxS+ZOt3xODnlzmZJMUKsh29Zn7Q7RArB1VZ1hGE967gtxGtZjfmx8BwTc49nePXooofYl szN2ZI1weWNzzvJMWq5UruQuQyOg/7aNXQibTBbv4NrRgpUDEp+KaJx95KZQldPB1iD2FReuLwM VpVjW/B3/McT3NZ+PTzJ0V4eOXZqA+6ki+rt473xmMUbEctWt5M+/uorPc2rBL7DoioEyTqR3w2 Zio/n6wszuIIiwA== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfX+r2UytWgfZ0h IhbAf4T16cbISFTWKaWutAW7v309GNtQDA3o7xLgm5dei6bv6qN7ROFVpSpgrKoFjicr+Q+lCE5 /rEjcchigB87L/OhzO74n3edFNj3CC6t+1LcT0PQVGCtkWDb3GeX3hLmBT12YPY9rhRdexTlUeM 85qcGyIicBCYLDa46KmNLxpwdvpvoW+Y2iYSeBtXappPfmmB0QfcaTzKVUMCJkzegJrx/igdREL IJ33rYB5SFIuJ8D5tcyLvXms2jh6AezTCXSqCv+5HUnqKErzwkfbGdhwOaV2QDG/giIWWU8pAKz jS8gkL9cENzffmTk6YHrkBpCeGgxgFY59BQ0hUEuSpSt5I1EpRfwbSfpO/BEnhY8T7bDh21w3tP p5VhYDlJwHg2EBTqP7hZh+PvobMsj50crke4JpZv9GLmuUQwNBPSRRTbI1TzAG3cy0jJXRxhQsb JxAsafUXxrtOLVtR0QQ== X-Authority-Analysis: v=2.4 cv=HJrz0Itv c=1 sm=1 tr=0 ts=6a550059 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=hkyMZWt8Xm0hL-3MNhcA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: dGc-dQefq36050VZjVIEVEfpLKmnpcjE X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfX4WYfKTCelAbV RgoDLa6DEIqsZB+9cOGw4PCVjhhzIDrssHqT6/cl/C+GjCWupKmI/7o+gzlVGMtO6w+mKK46Csr cBZ6vlW47Zg2jAbR4EXtlpyU7P46mH4= X-Proofpoint-ORIG-GUID: dGc-dQefq36050VZjVIEVEfpLKmnpcjE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_04,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130158 With no drivers that manually assign software nodes to platform devices created with platform_device_alloc(), we can now unify the release path and remove platform_device_release_full(). Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index a71015f1d915340aa01ebfae67196d4d7ccecba8..1df1a9ebd59ca6e0efdcd4038b1= 00bebe224ee82 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -599,6 +599,7 @@ static void platform_device_release(struct device *dev) struct platform_object *pa =3D container_of(dev, struct platform_object, pdev.dev); =20 + device_remove_software_node(dev); fwnode_handle_put(pa->pdev.dev.fwnode); kfree(pa->pdev.dev.platform_data); kfree(pa->pdev.mfd_cell); @@ -606,12 +607,6 @@ static void platform_device_release(struct device *dev) kfree(pa); } =20 -static void platform_device_release_full(struct device *dev) -{ - device_remove_software_node(dev); - platform_device_release(dev); -} - /** * platform_device_alloc - create a platform device * @name: base name of the device we're adding @@ -933,6 +928,16 @@ struct platform_device *platform_device_register_full(= const struct platform_devi pdev->dev.coherent_dma_mask =3D pdevinfo->dma_mask; } =20 + /* + * If the primary firmware node is a software node and there's no + * secondary firmware node, the primary will be affected by the call + * to device_remove_software_node() in platform_device_release() and + * its reference count will be dropped by one. Take another reference + * here to make it have no effect. + */ + if (is_software_node(pdevinfo->fwnode)) + fwnode_handle_get(pdevinfo->fwnode); + ret =3D platform_device_add_resources(pdev, pdevinfo->res, pdevinfo->num_= res); if (ret) goto err; @@ -945,8 +950,6 @@ struct platform_device *platform_device_register_full(c= onst struct platform_devi ret =3D device_add_software_node(&pdev->dev, pdevinfo->swnode); if (ret) goto err; - - pdev->dev.release =3D platform_device_release_full; } else if (pdevinfo->properties) { ret =3D device_create_managed_software_node(&pdev->dev, pdevinfo->properties, NULL); --=20 2.47.3 From nobody Sat Jul 25 21:21:07 2026 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 C4D6D3DE44D for ; Mon, 13 Jul 2026 15:12:28 +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=1783955550; cv=none; b=NEcC3R7QvSP2sqKwAXRHIz7pr0G7/CUH+fr5pQS/tdFTXa6S0PuF4OPdz+LiamDcL7qnocxbhTElRvDVC1zdM2HBPdTeJoc7yY4zw/K3/6cFfmn9jT3P0jAfjJYlVxyL7RxM/PFAhmRST1+dN9GCPgfoP0y93uk/5EIwb+z4j5g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783955550; c=relaxed/simple; bh=oLwa7pZUr6doS0kE5wIzyXtRk9PkNeS7cvA7R3LQYdg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T13gW1rSFaNG1AumIIs7CJA2/Wgd8E6pW5SeBT6YU2y8ISNDA4z1d/TagBG+Qm76vJDGbEvPH3IuYz8Nq4r8eb0u8t5bKGGV3VmHGLirc8/GabvRkYYumYpPHflYGHX/+EfPLWD95iVcn+ncnjjnrgO8W1Xh3G/2giO8YNVF8d4= 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=jcRCB/7D; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=evsuqGOK; 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="jcRCB/7D"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="evsuqGOK" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DF8BKY1611569 for ; Mon, 13 Jul 2026 15:12:28 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= nAzeN59J0azB7+VxlBwnfSfYuZUkQq63rtSgGfRJFeY=; b=jcRCB/7DvOW944R/ sn83hdNJaSiW5aSaS+Bk7JS92KHNJVniy45ohZWgZim+NDIyllXCfeL0643JD6OB jQiUD3NiPCq/ZkcQu6fwgtnRHKfOFfAbldYKMowgpaFzhNoFlNVI3ahliyR2ffYc PaViAW2GryjCL39Tsb8bOCkcAxbkRhLEaV320yapgpfF90WqOXk+YG8VONOv061v Q6wx5YdLDB/+iafOVGq6gd07pz+87PclsfgfoXKc1ZWdXY5kdD2TzCR6PquRcfnd xGjxEdVIjtb4cPrwiAdZdhm0Hfqe2uNaWXfGvh03KDCXkvjygTm4Qw4+pH9saWbB umxn8A== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcw4qsdqa-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 15:12:27 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c26012cd0so44975551cf.0 for ; Mon, 13 Jul 2026 08:12:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783955547; x=1784560347; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=nAzeN59J0azB7+VxlBwnfSfYuZUkQq63rtSgGfRJFeY=; b=evsuqGOKlFmtDKugRDgnPiuM5VBznOvZ0ZUCidk9p/KcAB36xMsctmuq0dceb838Vw RmD36GAXQy+2Ucer7sAkePr6Q4xWJpnG9yjcYHmo9QT69I5gKbje6KmX939WHxf0uAov dTGGAM0xVVsfohnGp6GKFXsxdS/y+lPg2FsFAGNZ8OoPYagh0XPrWpqlLyp10kAJR6HI lWrhLxmV5jF81mimAk+W781k+1yJfO/i4X8R4myr6CMm7vH5Z/Ntcc/MwgTXq25vWV7E juFo+xGJxCtWVSvrsp0XEeJMZAIe+cfFBebIzR7sE/rWQ7J5fDXfhBiJjTQT2LOFEmZo bCPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783955547; x=1784560347; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=nAzeN59J0azB7+VxlBwnfSfYuZUkQq63rtSgGfRJFeY=; b=VzXDmZhWNAFjr2/FIgKbLW8rEbHwdgHqy/nkUDAmJ3xbEkR84ZUvCL1DY+DZTP3UUm R6ky0NhgndB3cFtQvN+LNslNsvtQ5sMug/7bnK2L3yP0+WCthIY74lvF6QF+OPfbGPDD P4C7eFuLngnP4XAvLsIfhIMFP4myZXtDcLOhmZnCbHanBX2FIINbJyMWbPHGHtfqcreh PRZH+DM4UJSGlh1UcBc4UVf5HOIRMJORp25Ur8Gu47Sle4CT5Q7U6m9sv74Bm2Ejvd1z V7umOeftaYFlg528I3o7QXn9aDJ4azNRP5p+YG2rL0/dSDO4AJYIkfsxr13sJCmEEDPT idrg== X-Forwarded-Encrypted: i=1; AHgh+RptBKj8GeqG+eqs/Rgys+lErkm5CQayhpogd1VJKLOrgEvdxpVwMXy7IQCYyyuLP0h/GAlr0LVfG5Nn/IA=@vger.kernel.org X-Gm-Message-State: AOJu0YxEd9ZO2QA7JJERoy8Qe1BvkLhHhuiroKj8mtMyHE3pey5UCoDx guBxXVfllAp53x7cqAjnPQUyWi9aokc4rZPqazcvW5XuGy5xROusZ/1+GltdqlAIUswAxmOWjjM bHgc5mO+UODJDaT7c0/yyt/0xDI8N1K/SLxwacuroPHQnVeOThBQ9ckVgmC+20WuKvhs= X-Gm-Gg: AfdE7cmS4ZS+XKx8tA2V9qgz/tqHOS9lvBUdjpKieK6z7YTIXPvR1xdIO73hkpgZI0j PfMYlYEFr/Zlu761LKzLRxns9Q9cWJbyKjY8KGvH+qtFFaPxCZO/lg+kQCS+8DSP0sGJKwJtI06 kKSZcLHdoPe/j8XSQrLsATEhY9v9zNXIWc2xWIkc8KcEXRCQNExzCebImzHP9r8f3SjtuU/lm4t DY2wxMlyiYE3mNv130NBbcF8DmTaWV9ushbIsKZkE6Zu76jFdO1ad/Av4HY7/USIfXaXnHYZ9gP Q7G6R7cFbm/HbXMBVLFTN6xfFRYTnDwQ5wnNVtqjBpzYfi/t0bQ92/4+InYn9auEMGHkS/fA15u 6vN9lGtJCFXywWntFI7Xy7LEAbn+Z3n5hk0xRWqUt X-Received: by 2002:ac8:7f89:0:b0:51a:8c97:938e with SMTP id d75a77b69052e-51cbf287e88mr96882161cf.69.1783955546680; Mon, 13 Jul 2026 08:12:26 -0700 (PDT) X-Received: by 2002:ac8:7f89:0:b0:51a:8c97:938e with SMTP id d75a77b69052e-51cbf287e88mr96881541cf.69.1783955546045; Mon, 13 Jul 2026 08:12:26 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:8881:83b8:89fa:1a2a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0a558easm87956664f8f.27.2026.07.13.08.12.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 08:12:24 -0700 (PDT) From: Bartosz Golaszewski Date: Mon, 13 Jul 2026 17:12:00 +0200 Subject: [PATCH v7 4/4] driver core: platform: tests: add test cases for correct swnode removal 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="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260713-swnode-remove-on-dev-unreg-v7-4-6d6bc448427a@oss.qualcomm.com> References: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> In-Reply-To: <20260713-swnode-remove-on-dev-unreg-v7-0-6d6bc448427a@oss.qualcomm.com> To: Maximilian Luz , Hans de Goede , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Matthew Brost , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Rodrigo Vivi , David Airlie , Simona Vetter , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: brgl@kernel.org, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, driver-core@lists.linux.dev, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6684; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=oLwa7pZUr6doS0kE5wIzyXtRk9PkNeS7cvA7R3LQYdg=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqVQBNIfBh8eZoHsF8HLG+w8cZbCKKmZx4hpanR IC0jnASC8GJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCalUATQAKCRAFnS7L/zaE w+m4EACj7kCadQtPriMiLBsyh/UeZju0w3Z5woybvD2DUOzj/3xS8OhVCjG1jw4pXEMNjsWF7FE 25xld9nm/Vx8CURMNnyrdYLYP4sA9rMpvH09dbxgUyWKwAaX/0dTTfWITqeCgtVJpMvpy/gWt+i 1vBo0H/Xk/T9WpvZrUvwzsEdKd17lRXlSv+iu3JaIHmhHidGgkoN6pYxPyMNEjYO2jmXFbgtuso Co9zq0hChPyBScaGES4XUgTFXApYLBq1nHUc1MihSUrYvIXtOxs4c6KdHtzEwoGaWTzHukHKg5D eIXHliyqoXlTq8iUhPv+zWryvHiffyPz+ovpcHvjee9f4Sh6hgHTEmV5xNwi39W1sddnYQF5AoP a1rZT8YCTX+cb+e9tbb1u+7ICiZTmtjNi4/jGvpnilQ6dbB594mrW0VRESqh0GzV4B5YsScNhWC Ua+5s5CevweEZkMCVPyPokbahXHn1KH8jE6HXwB70l+/FzOuKmUC8C6trPXKcsYAxeWEOQtur5K UTchmQxsvIsB46bDeB4DYkcRiOSziygrE7nM+V3XI2qJqT7o4ASHt7NPxuQO5UccqU/4KIO9Rof K/sCY9GMVcEDo+EETlPdMj/xppbFdYHiUPbFv0rDYsrt0oIZXV0B63G9BEs5izCGywK8RvFRvqA kgq4M6heDWFlefg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfXwYQshjRTiCwa MHgu2JRtOt2mqKAb5Wmoh8sNFKOURBit7Dkdva50008UW+6FeSOlbanP719KXSjbWO0jhGCx/BS xERQHeC2Fh9cgLNh63MEkwdDkYDHSh+uY/1YF2ZabpgWlfc9V1hSItOqCa6gy+NThEN3Zaax+Je NkOk+JGknDV5CZ/edOGK7NDYHn95qTCjN3+oaXeWQX4zOeelvcfVO+ckZIdsXU+2y+qt3xmGYLi zNVfoNjxVKjUi7W/wmE0gZkvvI97qbjPUwAgG2Kwku7bxQMD/9PGPx3hHeXBUcCvbuS+CxZdJr+ Kuj3NeLl/K47+w+JrGdt+Q1ZlKK2WfrvFUlOjYEawvtq8BEp9VEVdYTdhamN/4K8SmcRLXiRdcQ TqdFseKydHzHE5+GdnMHvx+oUjToihnbbP4JX6VFRsltSpt2EaQ1jeqoT0IQaa3WD1bJzSpnHYq nJt4TYfPDQhUFKLTUVA== X-Authority-Analysis: v=2.4 cv=HJrz0Itv c=1 sm=1 tr=0 ts=6a55005b cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=zydxXWD-JFuk5BhJ14wA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: pdfZw0cX0t6xPPBa1gQ6Nzr8WiaE1LHc X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDE1OCBTYWx0ZWRfX8X9pIaujEt18 mL3haXySm1ziJ2wqxodJI2/XVIPq/8HEnktuNzXq7IYAPq4dz1LrBxOQbrZ5jRNM6ZJH+g4shAS X9sDpvFl9n5n+YNRo3oQcvfFHIMbD70= X-Proofpoint-ORIG-GUID: pdfZw0cX0t6xPPBa1gQ6Nzr8WiaE1LHc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_04,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130158 Extend the kunit module for platform devices with test cases verifying that the same software node can be added to platform devices repeatedly. Signed-off-by: Bartosz Golaszewski --- drivers/base/test/platform-device-test.c | 180 +++++++++++++++++++++++++++= ++++ 1 file changed, 180 insertions(+) diff --git a/drivers/base/test/platform-device-test.c b/drivers/base/test/p= latform-device-test.c index 6355a2231b741791b54eb78af42e13f31f745184..9ce563f76aad6943472dc78f363= 9ea1a2d72dbde 100644 --- a/drivers/base/test/platform-device-test.c +++ b/drivers/base/test/platform-device-test.c @@ -1,12 +1,15 @@ // SPDX-License-Identifier: GPL-2.0 =20 +#include #include #include =20 #include #include +#include #include #include +#include =20 #define DEVICE_NAME "test" =20 @@ -253,9 +256,186 @@ static struct kunit_suite platform_device_match_test_= suite =3D { .test_cases =3D platform_device_match_tests, }; =20 +static int platform_device_swnode_test_probe(struct platform_device *pdev) +{ + return 0; +} + +static struct platform_driver platform_swnode_test_driver =3D { + .probe =3D platform_device_swnode_test_probe, + .driver =3D { + .name =3D DEVICE_NAME, + }, +}; + +static const struct software_node platform_device_test_swnode =3D { }; + +/* + * Check that reusing a software node works correctly. If the call to + * platform_device_register_full() fails after adding the secondary firmwa= re + * node, the software node must be unregistered in the device's release() + * callback or the subsequent call to platform_device_register_full() will= fail + * with -EBUSY due to the software node already having been registered. + */ +static void platform_device_swnode_add_twice(struct kunit *test) +{ + struct platform_device_info pdevinfo; + struct platform_device *pdev; + struct fwnode_handle *fwnode; + bool bound =3D false; + int ret; + + fwnode =3D kunit_kzalloc(test, sizeof(*fwnode), GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, fwnode); + + ret =3D kunit_platform_driver_register(test, &platform_swnode_test_driver= ); + KUNIT_ASSERT_EQ(test, ret, 0); + + fwnode_init(fwnode, NULL); + pdevinfo =3D (struct platform_device_info){ + .name =3D DEVICE_NAME, + .id =3D PLATFORM_DEVID_NONE, + .fwnode =3D fwnode, + .swnode =3D &platform_device_test_swnode, + }; + + pdev =3D platform_device_register_full(&pdevinfo); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev); + + wait_for_device_probe(); + scoped_guard(device, &pdev->dev) + bound =3D device_is_bound(&pdev->dev); + + KUNIT_ASSERT_TRUE(test, bound); + + platform_device_unregister(pdev); + + pdev =3D platform_device_register_full(&pdevinfo); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev); + + wait_for_device_probe(); + scoped_guard(device, &pdev->dev) + bound =3D device_is_bound(&pdev->dev); + + KUNIT_ASSERT_TRUE(test, bound); + + platform_device_unregister(pdev); +} + +/* + * Check that passing a software node as the primary firmware node of the + * platform device does not result in it being unregistered by the call to + * device_remove_software_node() in its release path. + */ +static void platform_device_swnode_as_primary(struct kunit *test) +{ + struct platform_device_info pdevinfo; + struct platform_device *pdev; + struct fwnode_handle *fwnode; + bool bound =3D false; + int ret; + + ret =3D kunit_platform_driver_register(test, &platform_swnode_test_driver= ); + KUNIT_ASSERT_EQ(test, ret, 0); + + fwnode =3D kunit_software_node_register(test, &platform_device_test_swnod= e); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, fwnode); + + pdevinfo =3D (struct platform_device_info){ + .name =3D DEVICE_NAME, + .id =3D PLATFORM_DEVID_NONE, + .fwnode =3D fwnode, + }; + + pdev =3D platform_device_register_full(&pdevinfo); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev); + + wait_for_device_probe(); + scoped_guard(device, &pdev->dev) + bound =3D device_is_bound(&pdev->dev); + + KUNIT_ASSERT_TRUE(test, bound); + + platform_device_unregister(pdev); + + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, software_node_fwnode(&platform_device_= test_swnode)); +} + +/* + * Check that passing two software nodes to platform_device_register_full() + * fails. + */ +static void platform_device_two_swnodes(struct kunit *test) +{ + static const struct property_entry properties[] =3D { + PROPERTY_ENTRY_U32("foo", 42), + { } + }; + + struct platform_device_info pdevinfo; + struct platform_device *pdev; + struct fwnode_handle *fwnode; + int ret; + + ret =3D kunit_platform_driver_register(test, &platform_swnode_test_driver= ); + KUNIT_ASSERT_EQ(test, ret, 0); + + fwnode =3D kunit_software_node_register(test, &platform_device_test_swnod= e); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, fwnode); + + pdevinfo =3D (struct platform_device_info){ + .name =3D DEVICE_NAME, + .id =3D PLATFORM_DEVID_NONE, + .fwnode =3D fwnode, + .swnode =3D &platform_device_test_swnode, + }; + + pdev =3D platform_device_register_full(&pdevinfo); + KUNIT_ASSERT_TRUE(test, IS_ERR(pdev)); + KUNIT_ASSERT_EQ_MSG(test, PTR_ERR(pdev), -EINVAL, + "Expected errno =3D=3D -EINVAL, got: %pe", pdev); + + pdevinfo =3D (struct platform_device_info){ + .name =3D DEVICE_NAME, + .id =3D PLATFORM_DEVID_NONE, + .swnode =3D &platform_device_test_swnode, + .properties =3D properties, + }; + + pdev =3D platform_device_register_full(&pdevinfo); + KUNIT_ASSERT_TRUE(test, IS_ERR(pdev)); + KUNIT_ASSERT_EQ_MSG(test, PTR_ERR(pdev), -EINVAL, + "Expected errno =3D=3D -EINVAL, got: %pe", pdev); + + pdevinfo =3D (struct platform_device_info){ + .name =3D DEVICE_NAME, + .id =3D PLATFORM_DEVID_NONE, + .fwnode =3D fwnode, + .properties =3D properties, + }; + + pdev =3D platform_device_register_full(&pdevinfo); + KUNIT_ASSERT_TRUE(test, IS_ERR(pdev)); + KUNIT_ASSERT_EQ_MSG(test, PTR_ERR(pdev), -EINVAL, + "Expected errno =3D=3D -EINVAL, got: %pe", pdev); +} + +static struct kunit_case platform_device_swnode_tests[] =3D { + KUNIT_CASE(platform_device_swnode_add_twice), + KUNIT_CASE(platform_device_swnode_as_primary), + KUNIT_CASE(platform_device_two_swnodes), + {} +}; + +static struct kunit_suite platform_device_swnode_test_suite =3D { + .name =3D "platform-device-swnode", + .test_cases =3D platform_device_swnode_tests, +}; + kunit_test_suites( &platform_device_devm_test_suite, &platform_device_match_test_suite, + &platform_device_swnode_test_suite, ); =20 MODULE_DESCRIPTION("Test module for platform devices"); --=20 2.47.3