From nobody Fri Jun 12 21:40:12 2026 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 A6C593CB2FD for ; Tue, 12 May 2026 11:59:55 +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=1778587197; cv=none; b=aDlCzj42QoY8DR1wbD/ftdPoJPYCFv3LZjjW8D1hVSbjGqEEMTH5uTbeGot/DqO4jg8al2OARCTfjdcu4cqG29aPHWAyf1lxuw8kr3/cL3wgSb72qT0f991c2agMADMG/r7LyAYURQ6iBkGoMFudE2oThqRcXFkfXPyHonSK8/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778587197; c=relaxed/simple; bh=8YXXx+c7Bfn1zIL1XiDsFM7WtZrjadc3NSaS7UHHFkI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rJSIIqN0ha2m1PjJ73mOGv2KHLgRrUIC/VS7FlvOs1YN2o9k0b0RzSKdOKe0JwYTnOqJLTnU7ufpHHjM6E87FK9IXRj03dVNHCF6l9DJLeniygMg/5bLwR9un0xD3GVM/XJUJSdmImM/MbJo2XfRuHCiltlZEQt4urmimWfHlXA= 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=H2s8KL6W; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LxYDvbFi; 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="H2s8KL6W"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LxYDvbFi" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64CB3DHX2518197 for ; Tue, 12 May 2026 11:59:54 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= cgh4QSLn17J1vANVwWglRn08I0SloVcQwiRt7QECtys=; b=H2s8KL6WZl+HFXeA XKXCPqgcchtf+ePN5Z7AkIi2zb3bRBytaZ3m10tT4k0iSaxH9O9jgTWcGyu5wRBz 1VK35Oe4bAPHYnk80bV5mzBRUlRffJLtnnh0zZ8pdVAUymFaz26JyJBakoq0QXMU QlWccZTAc8gImxNaQ4XyiQUveLe9qo3mxARjlpDUxeOv6d44DbwlJ8fSM3SuZX1a Z9VeD1/2BVLJDKgbekMlbbZGFXMH7TK3UvAaoOrqSMrUDFmOhijobRauKUF5ezXE oWIcZTB94JtX9bJvmg6qOl2kmZs2+xOdVdCWibyYcL1uTHBfbs6ZJGjEAbN7bWHt OaAOcQ== 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 4e3nv1k65w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 11:59:54 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-514b5d6bb45so16168191cf.2 for ; Tue, 12 May 2026 04:59:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778587194; x=1779191994; 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=cgh4QSLn17J1vANVwWglRn08I0SloVcQwiRt7QECtys=; b=LxYDvbFiTCYMWCtcLVOU7/YQnuBZaytxY5qCs4mAlARW4W8FjmBrmgroqXFVuwgvzh Nlx453y9XCaDwOwAJL/CvRgof0ZFkSHzgG5Y3X8iZCy7q945ZiNBLvKXdufdtnfd78oG KWmNj0Gd1utZEzHP/eSLevAP4+X0deyxXIhHFq9aRo7XYJzuSyeSjlC4FTCa1BHG9838 5gu2le3jY9faVmH6hwPl7zEuSmNkhICV+TijvDPu/kbQfB3LngKixREeWq18/EytDTuv NC7ldb8YEyPMT95Xu6yWNKnE3Xoj3JAiye51Ut/39sOT7hTweGEl76WGpi2a3qjjAyjf Fg5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778587194; x=1779191994; 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=cgh4QSLn17J1vANVwWglRn08I0SloVcQwiRt7QECtys=; b=OyqH0OGyLAfrEmxusFnxwYnPRcxrcOrhzF0ZYOONTju1q1N99BcLCcANh5kEsuJ054 eFK4FVZswN/v0mOP2KHRB49ZU/5Jhna/qBmrqA2lEKTUKAlUUvTVZlO7qmRbyNMBMTEk oJ/GveMUcIO4FhoE6weSME/pPelSa0Mwb4P+x1HalnqinEi+dY0PZv+OQRJjVposftb0 V30I+WbnyK34CSh1rLxhRd3XPTfZEDcnYjzV7Ju2uth3RynXVyHu0i6UQGHIChQHmUH+ bk9i0Gby6QaJ/BH8k+8FbJSAbO+92CafRaY/YR87hQ7txRmO88uUQvAEnP92ygTTb8dy aZsA== X-Forwarded-Encrypted: i=1; AFNElJ/UPjpOz+51SUWXeJ0AaQXVkLNLj0X/fREmmkEe3iEaKcruBNmmanjLFYEmtVCRg7OBH1OKhhvZfm1ko8M=@vger.kernel.org X-Gm-Message-State: AOJu0YwMu1Dn7x1QRVrlDQJiP9mhOIh55cZLNh8zNI/yx0hUsdkyxBk7 4/qDFAnyHDPkUNLyWpVUcroOPsG3r6HmWBw1KCB9EFs9BQb08NtkAyGLfrtsvQEKVK1agzZu0vN 2ypOP94UBwd93l31ru5D8zNeE9/mKh258qhq5PKFGgRc320c21VPVWN77tTvvTsasO5fm4bEgPe k= X-Gm-Gg: Acq92OHWNr4gvU0WmMIMr0P/ykYW34ufgOnP02I20FouzFtwvGpnSrdN3RgGTLGrjkN lSuOVpPxVQ1ImKYs4NDogG9M32+ktI+N/+B62k6km4efVKG7JZXXjDA+Hyw6XEKiaYXbirY4ujX OxScnFdcuLxhh3b2KG7Ufm6UFe9nVS2WTJL6IOTPZ6jOaxzxaNVAY20WoIFArJlC3b0Vp8p5+Dn NcOvSfGACj2bTJdDHLhPpmcPx1w8dace8lya17HiF9r0TBnyNEszykYFJ/M8zj7FFyoCfrx/a+r 4Q/q8ROdv8rJ3CHNGlaUeCwx2ZjwZfkvEhb/KeUy4bo51MnHFIcsIowL5WXoNP67dFUxPOUFUDQ rQUsMKJaNCUNJ8FfMD3egE9waOE+hTUl+ySIJmx9IKM/txQmGgmo= X-Received: by 2002:a05:622a:388:b0:50f:135d:9508 with SMTP id d75a77b69052e-514d225c22amr37873331cf.55.1778587193960; Tue, 12 May 2026 04:59:53 -0700 (PDT) X-Received: by 2002:a05:622a:388:b0:50f:135d:9508 with SMTP id d75a77b69052e-514d225c22amr37872951cf.55.1778587193505; Tue, 12 May 2026 04:59:53 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:74a7:1c82:3f14:b431]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e9067811dsm73933355e9.9.2026.05.12.04.59.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 04:59:52 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 May 2026 13:59:23 +0200 Subject: [PATCH v5 1/7] 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: <20260512-swnode-remove-on-dev-unreg-v5-1-0035eff63812@oss.qualcomm.com> References: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> In-Reply-To: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Dmitry Torokhov , Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , 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 Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, platform-driver-x86@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2217; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=8YXXx+c7Bfn1zIL1XiDsFM7WtZrjadc3NSaS7UHHFkI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqAxYtcXF6G/xuyy8RtzElKbdbTBCAfD+hSfb4t 0KxvO28gjyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagMWLQAKCRAFnS7L/zaE w9yxD/wIWDQ8zdf046svG3gh5zyszGE0IvUtkRLErbl5T1mDwUk27Xj+Cl1PJQGfe1dUeM0Mr2F TAzUuFEXRTFbQTH6Z8ryvlpOlwsLgeNzJFf4ocozKHuVN+QAf5JziOPwC+6HhyXRjYY59LVgAvq JDckPBkta6Qm/k5cuLcwCj2/4bGhlcmPjITx+N7al6zVeAchlVBYhBZrx0+XQOPnphz+yg8iKnK dwcPzEyOPIq09ktmVw8p1IFzBWj2tgZe9X/vWzBfW2UBVQy/HAVRPx0vwhzH2RZx6Nk9a4kpWCT /UNAPFfzf/ELEOyQ84wHrpgeKlnmMtvblYksAqCfJZb+5uLd7vYo1+w8XtgQbAIcOk/iIz3EM3R fPUrE5EZxgd0thEWW4pSjLu53reA55ZDY/zccIRLrS4EY+gti8vXbMx6AD07BS41s71F+wYXmbh CDs7uLHF74wBANoKRTqqJWMPjsVtWBWHj8RpzmlnCVNCmfqySgdO3upQYbzYAjQOqE7W4DQqD2r 7upy1d70M96ahVCNlnIzh7LrKi7avXRM4nrYFAZuf7IfnNeNi5IESLkvCKnPOIzs4R/YhpTTsgH 1NMawU77ISaubzBsHHMTzsOFrdJA9B9KPlq4LkiR/YZ0XRixU+fftXYa84Jcgdtolkkv056cYgL UJa4iUJAnqGU4NQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: 5ccAQB60cYSdebEzC4Wn7p6x_O2vbe6M X-Proofpoint-ORIG-GUID: 5ccAQB60cYSdebEzC4Wn7p6x_O2vbe6M X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDEyNCBTYWx0ZWRfXxBm0CP+hrELi hv8dGl2oMP7dsHHLsj3WWGjITBkn670bUUf42EndyLyI3+YB8dWLZTUUbdAdRfxPFgRJQZv5mae Bjn+8zJts/Yk7j4beWS7B0VYfP87f8jTFAGCx7NtPlhWi1HH/I/4mKZ+NUSk1/2QY+6vaLQIo0c yniphuNKLbPrYuipQICYccGlwREMrx3P/unXUrmoSU4lY1oGrhBbR5VKlCKb3obBgt0n4J4qtL6 hKQHVcqEaSegffILZS08XTucdodyKVzl4ZDWZxU6gxkNwwwnDvuiPsL1jxZ+LoZe+14Y4DXP3QS Y+bcBGD1bRXoSjjSNqKhndDrOie/+dJwRIIyir0fkxQjDd9MfZ8sVYhCQ0HEyBqNZXJq1A6xO97 9mDt/J98bbAOGXVtwuv+zmY1bMT49Ib7B1c0tsceGFqBJETb2ZcYeB9eJ50G6Ma4S2CvLoCU6im dZF/Pnm8Uj4mubaf1QQ== X-Authority-Analysis: v=2.4 cv=c6ebhx9l c=1 sm=1 tr=0 ts=6a03163a cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=vKDqCkOE6BQjc6v61vgA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 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-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120124 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 --- drivers/platform/surface/surface_gpe.c | 36 +++++++++++-------------------= ---- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/drivers/platform/surface/surface_gpe.c b/drivers/platform/surf= ace/surface_gpe.c index b359413903b13c4f8e8b284ef7ae6f6db3f47d72..b8bb47b0d91f036ee5073d21534= f8f26a4d5ed15 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,34 +305,20 @@ 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 - pdev->dev.fwnode =3D 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 --=20 2.47.3 From nobody Fri Jun 12 21:40:12 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 E947F4D2EC5 for ; Tue, 12 May 2026 11:59:57 +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=1778587199; cv=none; b=dXXq/DUXcQHk7jwPuTVtqQfLd0JsjhAcHljScmNaKLqcxkijGQ5cHqyLLI4GvWEGI9TvaEvfJCoXRPyrxq5wePnbtTUE7sLnhswXIyTdMMfEnpFeJOF7d+nCSZkS2NR7m9eY4UALaMRus9Ny5pv7Lw6rFuh0CW85v5g5oL5PKP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778587199; c=relaxed/simple; bh=FnVwIXx6Ku4B5jDoy/RTsmZKiOzQrXf6yp9wvc3bzuw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nhk0uU7BklJ3hpUoq+BR39Bc8iRsUkFkJD3WfpvibCxvqb44pctyr3qNVt2ChtwF/leEMkTo9qCop+laMu5rKIGoE24unCz5Yi/UuMxYQ14WBkiE2YOCTkv7zfL7rPPCKUgirqrOLClvXjice9Vdgpy6D413j3SpdU62K2Vd0CA= 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=nmRF+qkO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IlCEEj79; 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="nmRF+qkO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IlCEEj79" 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 64CAUIPl3444396 for ; Tue, 12 May 2026 11:59:57 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= AsIlzmh9tphlDY1UgVWouFfmn5szfdJ33CZ+C2oPx7E=; b=nmRF+qkO4mGQ0+Nj XiOUNC4GoKCSEBmbKGynKNgdlODGWZYMxmqGXvqXoBsKRaeWPJTBnRg2XrDqeT0z Ep2XUuJIQ5+uli6AJEgiVUfzZqzJzapiWo9BCo5LW9efKZJglz7MMm9E1cDLqrne UH2pSb0c163G1U6RUcWsfb77vHwCZ8MFL/U2UUhoeIBwEg7RmNFRiKLN55ZIlcHk sjxroEZszldR6ogPUFJ7pgbs+rTamRBngCZN4kmYqAGufDsqIyh3mh8vuBKEeOjj qxVhLeTPT4RRu5ASdw81uaVfUslDLE/b5CM8gcElkYUoNjoLGoSAjuHoCKgeC5rZ u8jleA== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e3nv0k4wf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 11:59:57 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-50ea1a7a5d0so28729641cf.3 for ; Tue, 12 May 2026 04:59:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778587196; x=1779191996; 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=AsIlzmh9tphlDY1UgVWouFfmn5szfdJ33CZ+C2oPx7E=; b=IlCEEj79nKYR7B82bXevWjJnNk09d94t9BnBa11J8K3XilQd/CePzKoY8kbL8myMN3 veO2iL2IzH+UxoGKRJ84xKDyWDzT+X+868YL0DoB+2FyNOkybtlYcyyIhP8PdBVs9ssu /TXjXF5RgnWl7kF3ZAAB1Klv2KrUrkuGW+7Jqa/cdnH90tqMRF1dcRaXLfl0ds1BngYo t6ye1LpgAYs9gUkRhIRP5Ch3ovXFI6ovPLFz/+31wQO+MGWQcOJCGEh0DHzqCVmsLz1i y7IGCMmVqAQI1gllhbHxg3pWcWVwYoL6cUZ1KeSY95rIt1cpoofj/PMhpV4unSELGwRt 7AAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778587196; x=1779191996; 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=AsIlzmh9tphlDY1UgVWouFfmn5szfdJ33CZ+C2oPx7E=; b=Bl4gtrqMT840JJ4RWMX9Gq2IoGf64+fuiVUhF4zsksvnR3XBrT5ZgiM6K+aOrfMrjG KV+TWVIhpLYzMfKl5HN6L2f3udCwNx9uMpcEigVUvkpivkNamYj9SB+QC/R9u6j35Emq fSjS9uq4E1BytrivqtEadzioZlUYgAzXJGpQU8R8vpO6x0IiMaO9bwrhYh72zDvPHUkZ UvguV9dTbnMS2Ntr4tJ26pqMTgVUy6gOrqg2c1NwmsZ7rrt1ev+MP9tU8VskZfO+KhNB pMlVN6Vd2WIEzEL4SQ6Xj9htV8pVFC+EgZP4gHy5gsZWginUxPzIUFrDchyhpBVHBya1 rmtA== X-Forwarded-Encrypted: i=1; AFNElJ/KExVfobgoLvcfmG22MBq3sLOfC+QUCisRJxJtTnMFw2wG3rh4GcFqpdbLY8y81YVpwxmjVFrQYGQ4vv0=@vger.kernel.org X-Gm-Message-State: AOJu0Yzmf1WI/d2F7884i4tkA9HWb6uK1LvepkgsQ8hLBLdKGCimCBYh Ichjtu9P5LZuTJQwOMX3Qavpy9ITHMk/BIkYpBDfQm8BfLhj4U6/lxaAbG83UlAOXwSrCMX8iRj 7KwrSaAcqM5//yQrQN9ZnoWIuKQfMVmStUo04LuR6jwD1CckNyUrwXysPDWBkMQYmJun9+xzqZx U= X-Gm-Gg: Acq92OFa3cPrkiGao6WVbrm/3YN26ElsyCo+4/9Ql80ivBTXzue47wAjU4WVdTZoT3b q1OXbafc359puixdf2+N9l4rUus4cmyemeTnBXGyJ/qfexx1i4pFWPWfxmsJ4FbGkpiynLvRmz9 lZd1r9pULfixeTmIrx1jQWwywbIQerVbHYwt0NjMZ+D6Fk1/5trH46gDg7PUK+xhkbc0VGioDCA kcNcRq3jyb6R3sjsnknKr2YmCJHjzKQK5gTtSyf/GPlVS7hgZzIPppLXTnpjHZwuq59EEW+gTld iqliU7DEd5eN6+FLZaTcGUCGtKSJt9MRd2ihtt68DTIKBCZKGBRIIIFOlVk74MQ60R4n0USmyWH iSFpft/7MeLvkNtPtCxX7CKos0oosbxEEFuXbQW4VeyT2PWU2r+c= X-Received: by 2002:ac8:5fc5:0:b0:50d:819f:e7bd with SMTP id d75a77b69052e-5148e7caa96mr244595941cf.4.1778587196125; Tue, 12 May 2026 04:59:56 -0700 (PDT) X-Received: by 2002:ac8:5fc5:0:b0:50d:819f:e7bd with SMTP id d75a77b69052e-5148e7caa96mr244595371cf.4.1778587195623; Tue, 12 May 2026 04:59:55 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:74a7:1c82:3f14:b431]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e9067811dsm73933355e9.9.2026.05.12.04.59.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 04:59:54 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 May 2026 13:59:24 +0200 Subject: [PATCH v5 2/7] driver core: platform: make the swnode check stricter 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: <20260512-swnode-remove-on-dev-unreg-v5-2-0035eff63812@oss.qualcomm.com> References: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> In-Reply-To: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Dmitry Torokhov , Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , 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 Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, platform-driver-x86@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1181; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=FnVwIXx6Ku4B5jDoy/RTsmZKiOzQrXf6yp9wvc3bzuw=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqAxYuSqeVpF+6Oi3kvW3NNEoHQCk6tpKW1Pyi7 2WNxlR1TDOJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagMWLgAKCRAFnS7L/zaE w9OvD/9TDVT4yBV+W9E73T/WZHkxETcn/5Zk5PW7qxDBDuCaLa4ncmLsd4i8n3W9vPP3YJlGFyD XewbZFaa3M/WHPF1KHDoYn6jJpB3qM42PWskLqakoaze3tZ4pcAVreLZyExLmbgrmNXB2mdAU3w f6oKrs5sh8GkgNtnPG+ck4C98lSqXvjFfllUJzMbrzlO6qCEG75mxRevG+DgCP5HLCxhx/R+lVl 7QS0S4RKlNGZlPER3Vv6r+yl3EcpztihZtDO9qUeOvOahADyWw4YKVYH++iGn4jawAuqTRvJ/nM a8L+U/mv+V7fxOyab0Dmyp4UnOOM/TYiqiIlF5LaysyZRzV+qVwPchvoewhU8JiqQ0Vm2/qn7oQ x5MZkj79CENg7XMcb78yVc1cTsAtk2Yb1BG8fFejh7Xq1ODw7mTOSp9aX9aoIft76v40+g4ioSy zwlzhz8C0spx54GhTfCtCDCD6GWV35k8fm9iHd5FYuOlO0TXf3sEZVpW9X9b9DOzwnJHtZxWYEf rHMmbTrSz3LLLt0td8k9VygyecaznwyolREajGcE8uElhU90E7lJPlDoOxAL+cogg7ulDA5tAB9 oycQ+wKAEJ6jX23cG+XhjCdqJ/BF0ayheRl1mivwmjiEkik83S3A810JinvBU50vzJV6THDwRwG bf1h9uELBVNrWuw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=V+xNF+ni c=1 sm=1 tr=0 ts=6a03163d cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=mI8QAYneSzpRMWOT9SIA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-GUID: C9hpSX_rUd0IQKNBH6Yyev1rfFJ94vOW X-Proofpoint-ORIG-GUID: C9hpSX_rUd0IQKNBH6Yyev1rfFJ94vOW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDEyNCBTYWx0ZWRfXwGa8O0vUlNqS m6T9s1JMld80fevT7MH3OkBxt8mbZvh8smcoYjh3TSQ9HqtXTDeqHxc188c7zKkREOfInRjKr6q /nHVk7HhGqpIpyZTkjbzt0hgsm9eXgUF+KgEQ1nTlgiL4qBw9JkQC5hTKaf8gZ8k0mdy7qtNcy4 PCwQUbE5jo+HwXEPgl3EFnU/TDUBdJR6ObH3pUhGjB6rzsfrdfr3VaVifMQADJPPfktXptqS/56 KeW/V5yHii82zKakJnrxrxoHaAngLEBUSPoUowQCZdbM2u0iM59t6YnOid4Qv7jo77psdniY0Mw cRiUzy7AsR6gL7Z8Pfux9EuL8vMPqWKdKcpmr2X5HTVHK04IhUSTsXKKEaGstsUuTlnTqRkNj12 PRBq5/r9kwzSxRFZ/PLNh4FxP3EwqcsUUt1Q+Ne2HgmniNbKwDUmeDq+9KwssqbiT5jXWPnDyM/ NOU6i/cGWeIB9zdNFJw== 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-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 impostorscore=0 clxscore=1015 bulkscore=0 malwarescore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120124 Check all three possible situations in which two software nodes for a single platform device can be created/assigned in platform_device_register_full() and bail-out early. Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 75b4698d0e582e67adafa78c312d75c72fd654cf..18f33bec36726490255bc7ca3c4= ab07d9b7606b0 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -848,7 +848,13 @@ struct platform_device *platform_device_register_full(= const struct platform_devi int ret; struct platform_device *pdev; =20 - if (pdevinfo->swnode && pdevinfo->properties) + /* + * Only one software node per device is allowed. Make sure we don't + * accept or create two. + */ + if ((pdevinfo->swnode && pdevinfo->properties) || + (pdevinfo->swnode && is_software_node(pdevinfo->fwnode)) || + (pdevinfo->properties && is_software_node(pdevinfo->fwnode))) return ERR_PTR(-EINVAL); =20 pdev =3D platform_device_alloc(pdevinfo->name, pdevinfo->id); --=20 2.47.3 From nobody Fri Jun 12 21:40:12 2026 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 2B13B4B8DDA for ; Tue, 12 May 2026 12:00:00 +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=1778587201; cv=none; b=Pu45nIvCvIZfxXE/KrDbpWtfpmRCgQUYIYBzX7Qrw2cv8qbn8AJqo5cwijzpCg7XZGFaXafh8/0U5Tne+HTxcoVa3u1lekFiOJRnyLTBjTnP3P3rSmcwH1PAbdd/zIcHKPEMq7KfbWqzEVx2bnoxzHrXe+x9AG6/ym22pveRQbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778587201; c=relaxed/simple; bh=1hMeu1gCq3SSoVTeNvEzPugi/vqYRk+rwkD702lzSJ0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gF9JAg+6A+amK9+R/8gFgk2sBtUoJXkMmLSISlRVXsOh8j3X0MTz2wf71M+Z0rcaY/H/Fpi7gmhZPXIlWyQZ2bvx3jX+AMFYAeOcntqATnZog5VAoMnv11rFRkEk+qiLbFGGSRhf3ww3nN9ahGfTg94FP0CgfgCfXsCOOq3KKxk= 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=nE37I/Ho; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=B+eV+ViO; 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="nE37I/Ho"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="B+eV+ViO" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64CBcp5Z075277 for ; Tue, 12 May 2026 11:59: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= gn6K0alRO0I+gqc5hvCv/EA/xYHUJ6n4NNziUoaD22s=; b=nE37I/HofdSHCsev jOF859YTErogyCaMLEGhAoXMKmFjUf6CR1xMWI9X6hdsRxbdQ0USkEK42xDkpjxh YKT+3Wne8BxEI/LOz/1YQu/4/yi+QChNBgIIWU0bxa80ig/P3yuYNow8h+sprdfj arEplIdAw+T96EQFOzpEE5jhPEN2MdhcVv1wPgj7swEDVs/dhmpMK/MtxZ913MhB XEtXBhTOZF6MTwIxvtKmtTmCo3JYEOVUvc1oTCGKSHRD0QNksXEJUTPc3YwpMgRC uRmy0lLSF2H27PqGBLl3yJq/vhlzXTwmiAKSw99CplmKL4GhYFEoezbrcoyMGaKE wWLfPQ== 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 4e43gyg52h-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 11:59:59 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50d6bf346adso76373841cf.1 for ; Tue, 12 May 2026 04:59:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778587198; x=1779191998; 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=gn6K0alRO0I+gqc5hvCv/EA/xYHUJ6n4NNziUoaD22s=; b=B+eV+ViOrK4uwS1nGmCIFO9qWE1vP/0/R5wKMQIJDWSD9X6/bjxFkQlpQzo/A7C0Ec jYH3+ieSzxtqhljvkfhXOsKOazEHRmtYFsTsd0S363dZ+cnWuB3iFncO0gSWECofQzLS O+tMRY+XzY15hCpqzsHMDzGnSvSu23UPPDex2803bcD+HdknpK4EMwR5zFuDrsPE39oC p8MmO3//3VfsFxrovSKrm17l55N4A669UTxyWz7oqqtWpY1foFPcobQUlwYf9gJVe2LZ 4PvsvbB8YmvgINbJXLN5jomlFaVLez/Qy+ROssEQ1s4vP6+hhHYoIgTVrIBWXhblTCUj 4wRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778587198; x=1779191998; 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=gn6K0alRO0I+gqc5hvCv/EA/xYHUJ6n4NNziUoaD22s=; b=p7kXGneydojO4CkLqc5zoUM1oqOY42G2AQFcYE0n3baxUslWpVlNO9tQ8ifDo6xHeB cbY6QMMlfPqiZ606Ome+jDZTt/KpKz7/MEcHZKsVuPX6DcyezOHwN24p+MlZWzTwwOvS 1rbAYqouOz57ZAEDGWAUlDFm1i6eXOQZoRaRXcP1DWZCBpEtHSqnAzo5szse3apgMcJS jXKT0/tRBKwJBIhPjhdtOt1Dc9FdjAvZ15RAikVGpm+QtAP24TK0+1PrWlm8pGiK6EJ/ PdWBTDNteh0HpAnrziyNcr8n4zC2Ewtmuw2Z8fmuUdmj+Lh0viqsWG9/EyxgysjXFe51 oLBg== X-Forwarded-Encrypted: i=1; AFNElJ/YBH5CLwUjxS7wG4EHFStWXVmwaUT8evOrwldLMD+fjX8G1IaFCfeo4cGFOxBoREoKtegNDzROyR+rbYI=@vger.kernel.org X-Gm-Message-State: AOJu0YwLZ9b1RNaC/IzHkZf0qlS4MmIzoDIdlI2Wz6Esy6O6dyix6a0h 5rQ5y7Pq1tM2OiDAOjzKXhSROghl/9WfteQA5uKhWsGdutx3IIQLnW0Wi8oRPSCzBj6oRyh//TM NvysU39HQkWSHldCmu7XjiRh/g8WPzqe63IqznsTNpbC9e/uF9gH1OU1sGJEdDXsE237RRQa4B6 s= X-Gm-Gg: Acq92OHa4WGfuLqv2igfzvAQGN38Tsh/nsAufVGpilId6MmAGdwKtCpTuS70MUcLD// RNG1YCidHyvu3l2pNPLuX1/VWSNwJyqrDMA9+9OzsuxIXQYOFq7tGUfCv+2doJAwzkXBWWx152Q OqILhxPCvnFsZZbArspqNjxCxKzGbJWOlGrudUFhmMevcYBchhm7Co/aAsuxB5FxQmr9N2ffFIj wXXY2XcKVpTZ/7BHZkdT1Ri82C/5224Nntsm60o2xfrlJBOWzk1Ikfgzq5Pu+8SVoMpCQMXyOnK H3iI/RWDmvtZEDjo1uDZgQ5pNiLjyrlkTmky+32Y2I2W5q9mB42H69HYnMHUpAuMJ6eK2Jk1LWz 0FOPKbh10nyJHa2d2rYNOHvLISUR5u3wqPQDzzppVEmj7P++cDT4= X-Received: by 2002:ac8:5fc1:0:b0:50e:6135:f27d with SMTP id d75a77b69052e-514a0baf33dmr202421381cf.53.1778587198293; Tue, 12 May 2026 04:59:58 -0700 (PDT) X-Received: by 2002:ac8:5fc1:0:b0:50e:6135:f27d with SMTP id d75a77b69052e-514a0baf33dmr202420971cf.53.1778587197795; Tue, 12 May 2026 04:59:57 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:74a7:1c82:3f14:b431]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e9067811dsm73933355e9.9.2026.05.12.04.59.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 04:59:57 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 May 2026 13:59:25 +0200 Subject: [PATCH v5 3/7] driver core: platform: provide platform_device_add_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: <20260512-swnode-remove-on-dev-unreg-v5-3-0035eff63812@oss.qualcomm.com> References: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> In-Reply-To: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Dmitry Torokhov , Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , 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 Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, platform-driver-x86@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3870; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=1hMeu1gCq3SSoVTeNvEzPugi/vqYRk+rwkD702lzSJ0=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqAxYv3GAv2eZuGcQuN3eqfuoVY689gc9gsWBu+ YITubifYASJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagMWLwAKCRAFnS7L/zaE w6BGD/0RRzcGDUT1rhONtHIRmNB6WOnJ3706An57VS2M4of4c5Goyy6PGimVshH/GIISNiMllA5 A+KR/P1hnT+piwAECznIeztfxsH9b6O2KgxpEv7Pe2DBZkwpFQLRJ1eOAypZ3P6SoN27BKK1xi2 JiKCS8W993kMveLuhFRw0eZtKXXtlBdtWl5zKw2IcwQkdqtkZ0CHevEFq2+hKn1Nt7jRIW/u8bd GJkjJuE7a0+fGAXiN4nyYGqdjTn8cjIwO1hsA/S2Z/qbw9wjk0dVMzNz4w+m9aiXOlXtLsxHE4a 6bhj6GH2Pw0ojuHYB6Qv6dHYkKpsvav/uRy6k8qNZkbv44fUhGT5ytZe9sWG/Vl8JEY8BEMUf7s Qq9S9pnAYLL0tvdETWPI0t8R1K093TbTAUYCy3ECON9EMH/uzZWKRLzfxpbSRiVVesCyJdti987 4IHGaQ90OygyC7CvDSknVUTFbyHQM8IFyJOXMNwFRx/cKE44lebECUFc8Q32dDMV2VSJesUIaru ZUHnNIO9Kf7aLso1DRWYryI6+qHoLh0gJETcCkvSjpzo/++uxEzX4Xs300MzzDHsox+mBiiNSDs BBqtytrbSkbBWad/CBk1DHnwywe3Bsrv2nM58wVgEIWsW1ml7A+ZuTMkMVe5YYGeTLBBxCaHzNZ yrT5web3qDg+Zdw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=fMAJG5ae c=1 sm=1 tr=0 ts=6a03163f cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=9foaQtFGGNcyJ0tOL8QA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: pPnJdauqb6n5NrffvaR1QuEwVmCXj-3X X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDEyNCBTYWx0ZWRfXyf06ueQ/y9pH pFOV8PVO2DaGzx/SfBMQtDPbZyGMaJgFz0dQWze0m6RXER8Lz2K7/5ykr/s2YRUVsJZF+7zDsD5 OXexo3zI80CAw4HALwhHe41TgGTrgEwTqq7EWVTMH7tT6kueowlbjem5hYVtSNRSbCSwPfwlXsm aZQvaC8uDje7+3KTUHWt/n0+y840RUZqHBcyUx0XP7VIHnW9bcNwgog7WsBk7AxE9jlL0HhjlJQ eGJWyYhv2qSE2LfLujSDzEDYWgjF0/i37N3F++aZu6wNV6S1UJM8V2ujjtDT/WwM22XLhQbzESC 11vjlG2hLD9lHE9uaOgcHM9Lmu/4pvYHv1G7ITdHSMfCmxRquw4bWV6zyje2XH0H0SjIpwibNT5 i606bPMOrD/ryw3z6iAwXiJCI/ttG3RrvH8AYvQhEDdPF+54j6tZyX4nGMt3+Sg7Y5bKv7aBYDA 74dK9ND+YK5V3x9nb0Q== X-Proofpoint-GUID: pPnJdauqb6n5NrffvaR1QuEwVmCXj-3X 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-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 suspectscore=0 malwarescore=0 clxscore=1015 spamscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120124 The software node added to the platform device in platform_device_register_full() is currently not removed on device release. In order to fix this, we need to first convert all drivers that use platform_device_alloc() and then assign a software node as the primary firmware node to using device_add_software_node() for correct reference counting. To that end: provide platform_device_add_software_node() in line with other existing helpers like platform_device_add_data(). Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 25 ++++++++++++++++++++++++- include/linux/platform_device.h | 3 +++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 18f33bec36726490255bc7ca3c4ab07d9b7606b0..f617e02b171f6e59a3c40504a71= f8915a41e8514 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -613,6 +613,10 @@ static void platform_device_release(struct device *dev) * * Create a platform device object which can have other objects attached * to it, and which will have attached objects freed when it is released. + * + * Note: devices allocated with this function must not have the following + * members assigned manually: swnode, resources and dev->platform_data. + * Please use the provided helper interfaces. */ struct platform_device *platform_device_alloc(const char *name, int id) { @@ -687,6 +691,25 @@ int platform_device_add_data(struct platform_device *p= dev, const void *data, } EXPORT_SYMBOL_GPL(platform_device_add_data); =20 +/** + * platform_device_add_software_node - add a software node to a platform d= evice + * @pdev: platform device allocated with platform_device_alloc() + * @swnode: software node to assign to this device, does not need to be re= gistered + * + * If this device is already associated with a primary firmware node, add = the + * software node as the secondary firmware node. Otherwise, make it the pr= imary + * firmware node. Register the software node if needed. + * + * Returns: + * 0 on success, negative error number on failure. + */ +int platform_device_add_software_node(struct platform_device *pdev, + const struct software_node *swnode) +{ + return device_add_software_node(&pdev->dev, swnode); +} +EXPORT_SYMBOL_GPL(platform_device_add_software_node); + /** * platform_device_add - add a platform device to device hierarchy * @pdev: platform device we're adding @@ -881,7 +904,7 @@ struct platform_device *platform_device_register_full(c= onst struct platform_devi goto err; =20 if (pdevinfo->swnode) { - ret =3D device_add_software_node(&pdev->dev, pdevinfo->swnode); + ret =3D platform_device_add_software_node(pdev, pdevinfo->swnode); if (ret) goto err; } else if (pdevinfo->properties) { diff --git a/include/linux/platform_device.h b/include/linux/platform_devic= e.h index 975400a472e30e2f98cc8f13bc36a63129bd4fcf..bd421506e98fc293c97121693e4= bd18b703e41fa 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h @@ -19,6 +19,7 @@ struct irq_affinity; struct mfd_cell; struct property_entry; struct platform_device_id; +struct software_node; =20 struct platform_device { const char *name; @@ -262,6 +263,8 @@ extern int platform_device_add_resources(struct platfor= m_device *pdev, unsigned int num); extern int platform_device_add_data(struct platform_device *pdev, const void *data, size_t size); +int platform_device_add_software_node(struct platform_device *pdev, + const struct software_node *swnode); extern int platform_device_add(struct platform_device *pdev); extern void platform_device_del(struct platform_device *pdev); extern void platform_device_put(struct platform_device *pdev); --=20 2.47.3 From nobody Fri Jun 12 21:40:12 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 E36074DA521 for ; Tue, 12 May 2026 12:00:01 +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=1778587203; cv=none; b=FAIu12UQ/eLc71L7hp+o4aW1epzxVheNJcf9EPQ/5b/KsJmi68xDHOEkHQegKvryjPgHhdnTQZ3z0ebkuxxgQl9z5bJ3H6AHumI+eMDKRNCRhQiHIpHc2bjMqrHtf4iIWgmx4sGkdeLZ2uccHudD00iFPC6/x7QCpYCV7A21GAs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778587203; c=relaxed/simple; bh=WGHMjJxrf7oH7IgvHdLBFYDNllKP66ZEIO8mfOfwUTA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sUlezOkS4xs7OKsD5RXw3u5/Vg4zSn0rkMAjzF5yRa+4NwRuzoYpiwNFMVrfES085Fu3PnY1/Bvh50IjEpr7M+5z49oV2I1hBrdULF3C9OmFlV1V6P4h5oXIcKuO5jIn5k9T06we3tjWPMgV2DjyDet1tYinkM+r+TAp+8aT8FA= 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=PT9onUSc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=VFGMYT24; 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="PT9onUSc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="VFGMYT24" 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 64CAW5UG1183963 for ; Tue, 12 May 2026 12:00:01 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= VOna9W5wpCKqk8fmVtBrEqEi7COqbhaHvWRa0Wuj+6U=; b=PT9onUSc5JUQ2Fv9 klheK/WVRS4OuWtLDwTjyzQgQVRWiBzHsHJLHkeZ2mNDGZf7AOZKAe4i8U34YzKR a7KuH78hWjKDqz0a0lsxhP0cgOZKzkIOkzkX08dRxzFEycr9b6t1UXopRx6DrqXX OwdHaLRVCJ3rSk9TXICDQ1poendojpV08Os3soz8mbeeUlM+9UuUaLvRMj5xyE1V 2cA6mCFNgR8Wtjmfoco/GbUTKL4A4CTBlXqqo4BN50+Bjv2Lm9x7Z0CW0w2h5/Ul 4PxfuWv5tUfyinHuvyxV8SHGUCP/ypbPd/H5Gd47tru6fSmYi67WBS6BcG34ZD5X cvDfXg== 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 4e3nuyb55d-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 12:00:01 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50d890580e1so91520261cf.3 for ; Tue, 12 May 2026 05:00:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778587200; x=1779192000; 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=VOna9W5wpCKqk8fmVtBrEqEi7COqbhaHvWRa0Wuj+6U=; b=VFGMYT24jPkTZYZOiWKjqD74y1d8OAsCT8Jwk0fQKcehE/N8+o0EafeC/aFCIGJBro VCxe9Cc/KUU4kPEGQx4/U4wCiT+yYXZ3dNwCW9uEtgfDuiDinFTYvD6QV7bYo5RxKb2N 6AUL4bFXjGoQfTeW3CBqmX6KPTNQ1raXcS2KHB1zeTTg2tUb/tFbwksWnW/UZTGo9L3t 4Gj++qO6no5TACu0DrekOPqVYKS8cZaNIJwRcJfOUrQFljA7RXVqPTled7prJPuKQCQY 4Fi0KQ2xCdWku7Vi6sxmFRAQtM5dZQ5fInor7kr77wZ7Rmy17o4DTW6kfHECIPgMD38S 4jow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778587200; x=1779192000; 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=VOna9W5wpCKqk8fmVtBrEqEi7COqbhaHvWRa0Wuj+6U=; b=jNCdgsgCWMunmrDfSdHlODsSqBOCXB/xFloTmmUdLJ/DRN/WEUcnjXY/vsMnZjuhey BTI9SgEJtSW/yuPsyHpzMRu9lVxi1O1wwZRhDwKn+Bz77ubzCQqs3PoFSep7UgBvNCzB BNaC9FPoMhLjX+BTcDG3HTSHXV8yz7ywI2XhKVSfJRr8JoNBpRiTF8cyHWYOa/aYUyNJ 2SZquezMvtfjYqz4zbsCkc0KrFvrTi6dWBmi69lDT56sPQJ0wIO4/6sNUzr95mzPK2P2 Ybb0wHrtBouF4Bv6kO1TA3YApYAOt13JKbbaLIoRmqpJwlysV0hiOunuQq2vlo6lN/bi /bYw== X-Forwarded-Encrypted: i=1; AFNElJ92JpnsOfDAcL+SXkPcmu6F433iqO4ZngiIEfP9Tu/6nTSaVveGb0EtOB9zng7s+tv7AMTyvhunYaIvh6o=@vger.kernel.org X-Gm-Message-State: AOJu0YwE21HiO2NvdJCVOwmYFVCpcWhKfjn58UL3m9kruX/rUp39N/TQ tdCzRzSRbkc3kNCBc2Th6yH/NQNFjAoskTNsHv+z1/Q0TnlRUv/hNvwxRK3vSOTg6fXNWe/dOAX hHpD9MhhVkG9cE7zpLm+7+TuWJlhlqplvIDvMHZU/LSYGVLzvPDa9A5uCwZnhm+tuVdremu0DHM o= X-Gm-Gg: Acq92OEBHTzR7LD3qr8E/MNCExOfr2xaKse3IUyl+UGHHlDsInSiRKvroDfyBWc0lfy lfBI15seR6n9w1VOb3uXBiEic2rtw9hkhXY/nR+mWd0o5i9TjZwGcymi3n5q4dxXSQCyaPqigJB GMtG9AYvUaEx/LXiRd5onXltK1mgiRE+JbjDyl7iVXLjPrWXI0QxnjnT7OYkzHb204bDdQPSyre xnEUl5dbOP/N7Q8RzX8AnyVH2v1Rb7WuRQc8Kmpr357mC1xIjEpBFrWyPgWwcCeanI9QmYyZ7/Z FbswIgSXh/64XLvR/ezeLci0rnq5LGaiYGm7cwR1ABQkQezgk23XaeDvf8CE4P/MxGzf01dQ9iu CepRVgCDg2/Wm443IJ5eO8nI+U8djDf+tkDSg5kpWj7w0R74BBYw= X-Received: by 2002:a05:622a:5a0c:b0:50d:e471:2d1e with SMTP id d75a77b69052e-514a0b162bbmr197710401cf.35.1778587200180; Tue, 12 May 2026 05:00:00 -0700 (PDT) X-Received: by 2002:a05:622a:5a0c:b0:50d:e471:2d1e with SMTP id d75a77b69052e-514a0b162bbmr197709991cf.35.1778587199702; Tue, 12 May 2026 04:59:59 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:74a7:1c82:3f14:b431]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e9067811dsm73933355e9.9.2026.05.12.04.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 04:59:58 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 May 2026 13:59:26 +0200 Subject: [PATCH v5 4/7] drm/xe/i2c: use platform_device_add_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: <20260512-swnode-remove-on-dev-unreg-v5-4-0035eff63812@oss.qualcomm.com> References: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> In-Reply-To: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Dmitry Torokhov , Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , 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 Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, platform-driver-x86@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2520; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=WGHMjJxrf7oH7IgvHdLBFYDNllKP66ZEIO8mfOfwUTA=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqAxYx2ZLKH2mMb9P0WlhVjxpG0796FSFhzeTYC sdRRHe05rSJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagMWMQAKCRAFnS7L/zaE w8a7D/wIiiIDPJH/+iIMwIbha36LuO+N7wt5BKJwiQ1mnZGHaHUaehld6NCSuZ/+zP4sy1QO4VP HHMfo0uxwui4fTa1wEUyzrNRv9nqpCxdndVr74+DDugDpBmNpyLFl6dPKGIt3To4Z3VKBRvsWo6 Le9q32W2epex6IrbhcIctSDzDTWFt5Owm1xmpXYy2qOM4N2rydeVx6Ok9gTCc9blWXYoJSVQd7G RaknUUAdAZmDTMzHZjTUu8BCF6TBbbRHKR+53IgdZn3D+i1XpDEHa+qQVsh2eL/Xi0DucI3YTKw IEVWs5dl5ep08Z7MtIBOf8DO9OMQXYpsWk/oMF61GL3iGo3E4MT0OyhrMY47FroSexr0iqCZ+WX zoYqJ+XnlaD5UHY5yNdVVEwqlBG1O/XUHFR9BpE+V7a4rCDliiV3rO12Pw7ZAemlzzJFS61fgVu CBPkleiltRXrUQ4wOWhue5GWWoiQn8rHnsPMmNsBp2Dnn3siL0aB8FLCL1WNE54Qw9T4xlyIQCQ OhpuZYuSSZmL9nmxOtqiwuHeVNThzm9A7jLkx1lWyJCCMTvRfPEuLQ9YdK/09iZv+DdmlSXVQ8x qrVc8Mmws39mPN7uCAd+8FMJ9ejfDq0AnLKPM2/qQO6yAsEYyf90nrFz58gE0rftVCAhvpHX1Tx qdjUUPNn62OIujw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: 8WNREp9itM2-ghtMW4J4O8uudj4Z7c9Q X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDEyNCBTYWx0ZWRfX7bzqY9c+Cwqy DKUMVnIusQhelXFir/lo3P/8nnEsDgMfYChRvSQKWrlTey6gRERw0/64jrjZoX9yGw6m30MbPlC RAnB5kMIryC0ZQJt8rjGwsUfuS7asSRrhMVUI17uDAg+EJQiAwOm3j21oAcGN1g3/VIsV02+JDR xRoQmwY0klsaeaR/hEWtDVcl8kMyq30kgDrDAwteaYwz+8fYgG1fvxbbCXXS/d25fO1RZ8YHdb+ i1uILmfVJjdtSyoEGcWFGakQ+ACUpGiGuqkvdXhps9N/9k3AP0NhZ7gDmKtWZOMQ3M96bgLo+aM x33p42ubJEX+lYGLOdqJZ15QSzdYKVA2dvcbfKUzKtIXEoRbH92X/wzuSoN+Ph7qE7QULuBF6Oc dKayZfagtvVeGrrOjWK265Q424ZDEtg77okBQiHpIgpwjIOn+TCWJD5EnyBCBjW63lIv4pkSz99 Evk0f4IPwPFwjTo/1KQ== X-Authority-Analysis: v=2.4 cv=UZ5hjqSN c=1 sm=1 tr=0 ts=6a031641 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=583x_htki4uszOnHNJQA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: 8WNREp9itM2-ghtMW4J4O8uudj4Z7c9Q 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-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 phishscore=0 adultscore=0 clxscore=1015 lowpriorityscore=0 suspectscore=0 bulkscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120124 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 the new interface that internally uses device_add_software_node(). While at it: define a static software node with the provided set of properties instead of allocating it dynamically and simplify the error path. Signed-off-by: Bartosz Golaszewski --- drivers/gpu/drm/xe/xe_i2c.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c index 706783863d07d66b4685005d6649b3cd143ecc3b..7f4295e7dc74f112abff8427485= b5c8a5ad71383 100644 --- a/drivers/gpu/drm/xe/xe_i2c.c +++ b/drivers/gpu/drm/xe/xe_i2c.c @@ -53,6 +53,10 @@ static const struct property_entry xe_i2c_adapter_proper= ties[] =3D { { } }; =20 +static const struct software_node xe_i2c_adapter_swnode =3D { + .properties =3D xe_i2c_adapter_properties, +}; + static inline void xe_i2c_read_endpoint(struct xe_mmio *mmio, void *ep) { u32 *val =3D ep; @@ -96,10 +100,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c) 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 +107,12 @@ 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 platform_device_add_software_node(pdev, &xe_i2c_adapter_swnode); + if (ret) + goto err_pdev_put; =20 if (i2c->adapter_irq) { struct resource res; @@ -123,7 +125,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c) } =20 pdev->dev.parent =3D i2c->drm_dev; - pdev->dev.fwnode =3D fwnode; i2c->adapter_node =3D fwnode; i2c->pdev =3D pdev; =20 @@ -135,8 +136,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; } --=20 2.47.3 From nobody Fri Jun 12 21:40:12 2026 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 6E17D4D98F5 for ; Tue, 12 May 2026 12:00:03 +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=1778587205; cv=none; b=K4q85afL35sVBUm0G5yVPjVrHcINNidJGxm1Q+6MaxF7n7ionHTshq69W+4KcF1I8JduykIcSlfr6c4kKfdiWeWvlguMspOimTDDWgykZf0APH0XEJnx4B5i2c8kjWquR4X51uSmw4QlqpvryOTbgrhW5Tfxwf6visxjD19sBgs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778587205; c=relaxed/simple; bh=o5qzvWWbh5DFQqh9VSRzCVHKMN16O5fAII+Drmf/uwQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QpVwwqx0XKQ/HgzDhzwLNbMDjsd0NrsIobvAEF9KK0HhRAj/qAJrVB/Y9yUd0dqk2HRcIn3xmEKMGXTuBZzGDxhukme/Ej7U6EWSXNWjKAE3jc/bA5+0R1L71iBOwxwY70+w6U08Z3hGmBFE/KWGDloYh4PHAEcQaj02dUG2gsw= 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=VbpRXmmu; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=P1LdN4RD; 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="VbpRXmmu"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="P1LdN4RD" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64CAcH3k2519063 for ; Tue, 12 May 2026 12:00:03 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= W1ocdRKROTEYKM8Gkerub/6nliQHs5DIXO6Yt2v/oAk=; b=VbpRXmmuQqQ5qVCU RJJSwsi8YyzrKvLmTJW5z9ilS0EaWKFCIgIDSbAQLADWHSO+n2rJ6v1/vITsZijG j6inF/wJuYG5k+3ao3kOSb2gt55P7+GY4deEe4kzowQPVxgQ6ueZUdLHt9UOgZDY VZkt3kxDGbMA2GB5+TxAP64q0e6NghG8MrAXyLJW1HD8Ja9nzHWkqgu7KrBeYw40 csCLSP+RZBJzaY9fyKeD8lAA8Vz78bHZtO/alvlEQgbIKF033vv4BZpe+O9ZuUxL aH37thCgBuoofqcZ5FT3uHpLfC12fgfDLynZRezXir5myO23d5wwqoESLlE4Dgqi PyUaXA== 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 4e3nv1k677-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 12:00:03 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50b220c72bbso98699831cf.1 for ; Tue, 12 May 2026 05:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778587202; x=1779192002; 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=W1ocdRKROTEYKM8Gkerub/6nliQHs5DIXO6Yt2v/oAk=; b=P1LdN4RDdGltGtMLITxfx9dUmXtv6/ctvyYMXNG2UBZM/1/DIbmq2O0WksKIM24bC5 PCu9oW2Hq3afe3HybzB4KQe6CPZZsLpUJZHg7PbOLnwCu/nocVpm2mBNTM/mry7pRJZ9 GNIW2La17Lvl6Wn4G8NmSvz5CrrW+4CZKT8U62UOaCdNp1ew7JehmQU3q00WWQt6M5By VeCcsdHKpUFyE9OUa4PIg6xI+2SkcMq0DGj82c0oRItFtzdaZ4OJmt2nGmPry5qtH60o sMB7uSjcUjKb0jNqRUfavqZo4Ker1KVIkGx+4nVlpKEt8xXSO6g0Yp4Ku7xfQoJSiSKX TtIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778587202; x=1779192002; 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=W1ocdRKROTEYKM8Gkerub/6nliQHs5DIXO6Yt2v/oAk=; b=Ba+EQHb1voCJ4W6NUyWtC4R3+9n8hv+3r6y0yXYWiO++id/kjZ9llsxSzxtxwPFeAL EdQw8480h5hFKk2Ij+3y0skvQE7XWC1kr7G2fuTp9QNJdA/8fld/WwtiR6Z3zlIXzUXO nfaczCYCCxYtkHHsk5+CGCo/6ksNiho0ckTeRW4lXLFfZ5wQhwPS5zNGWrqSx1HGSWZ/ eBuQ4nuSNiDJhxPC0y2+0uc3aGpRV0SUli3nFInLyRYSs2eAO/wc/YyZRxDUscMBT6dX pIe+YmCnAMAFN1ZVztLGj52dooMruJabuGicNe6D/3ewMR3v+WXFxV5vZ2Gf9+sW56JD x11g== X-Forwarded-Encrypted: i=1; AFNElJ+/aachggavM3NXu7Dosza1IFRzxWj0rU9kL1AIUcKVa1mdHH7oa8be2dgqyJhymGdtmW8V1oM8KiwFxCU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/SKXPM7TepjGjIxoEfXWbLMbBNvNKxo+kcH43jatwFp092QFS FwCOknC0AEooFVg2tKzRL1kPRd20ai910b55oaN3zmPLot2b+d2lMgDVOcPOnNClYFw9PCJQkbh Cggbkhxsa2iPwaNY2GB9nZvADULJe8yLSjV4Vopwpc/QdOzrF0SrUHNvK1yjuvEldVEY7yyiBTu g= X-Gm-Gg: Acq92OFUSqrVIHyvhSPnnyrg8sIR3I9X7ZeYucQv4IJspf81L3f9C0M73VopgWu61O7 DevDMiKh1rzy0/vjMdYsA83Lf4vEnKAYS+LlqmgVB7QStiF1/YXx+8NadXuIxKKNnhOqcv+C0QV T7RtdOXG9X791qh6o0sEwEac/HR7TtVfx+g+ooSP7cMLZDEBPSZ7EG0K0leQ+6vkBRPax8oohIc aQN/juKWg13RK4jytI+mJ0KqaUlzQLPTA74KY6SwsDpoyeRYm2osBiAeMVsdIrb/GZrDoRdOoeO hBbXdGcMylgKQ4ZAEg8YxSL49d/bPtglBmNIQ/ZSP0aT0bnsT6XhiXH1F3564jd3D5kPB3hW8if I9xCtfXrT0d3k9mGttaA8AhRxdOZkHQWt9/UmS8Ecl8OnVRKBd3Y= X-Received: by 2002:a05:622a:5149:b0:50e:5f71:62c3 with SMTP id d75a77b69052e-514d22362c3mr34391281cf.42.1778587202390; Tue, 12 May 2026 05:00:02 -0700 (PDT) X-Received: by 2002:a05:622a:5149:b0:50e:5f71:62c3 with SMTP id d75a77b69052e-514d22362c3mr34390521cf.42.1778587201887; Tue, 12 May 2026 05:00:01 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:74a7:1c82:3f14:b431]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e9067811dsm73933355e9.9.2026.05.12.05.00.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 05:00:01 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 May 2026 13:59:27 +0200 Subject: [PATCH v5 5/7] driver core: platform: remove software node on release() 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: <20260512-swnode-remove-on-dev-unreg-v5-5-0035eff63812@oss.qualcomm.com> References: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> In-Reply-To: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Dmitry Torokhov , Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , 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 Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, platform-driver-x86@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Bartosz Golaszewski , Andy Shevchenko X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2155; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=o5qzvWWbh5DFQqh9VSRzCVHKMN16O5fAII+Drmf/uwQ=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqAxYygPHpAD/qocFmp4XUtkTSI+UdhqkR026fU nuhG9wYasSJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagMWMgAKCRAFnS7L/zaE w9JBEACdF9JAKwGbUN/7/vpGxkIxY4Z53T9iP0IB4Wsvrn2Z/RTWkzFYcsyta9gdVUsC30cUi1v Wtrud32nDPLsZjP9B+9n11nnxuVcDYM3YcmlcaFF6aFM7y2FK50ImRHVVGO3aIoaL1T7+0BA9qo zrX5i4uC0Y5exI93thWGPaSPt+ZTdUCUe8P8tHSfu73dvNEMa3jXxdDWxcaTqoINjtjBmDKnW5f MiufJMZyQk4CmPe0++KaQh7vAzdOBK9Dt1nuLk+1ARuJrQ1DFIl8wMMdJ+jFZIGt5DFaNkbMolq nOL0QhwG+1Uo1miuZTsiA77/sT95jq8haB4S/qZJ9uny/plHmX4N08K+/CW2LuzW6/VzEjBBaE9 bL+tGPkLYUSDomKREI7AgNv+tmTHrPi2bvB4AScnlIJZDmS11OjPsQgriNO+6CcywhEifPUpS6A UQeGI18BnvvDEdqAOikuMKNyUnvnsHL22hJgKdzFwWwyjhZMrpAiTetH0p7hFPP8+uiMk9wKG3L Fiu4tA7yrEBfOWZaoU+ye17CQUnAVlbg6B9iChvLiBt4/Ptzh9sq0mWBbUCemFu1OLcrGTqDqAT vksr8UqkkJ/UKQmEwOkEMBc7ljIIYZ1SjdwxI7q6Kd5vwXNM0csDJpM8Rq47ezo1uKWv4Rj13vb IlMPFISGX85OT1w== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: Hgmy_q9a9yAaiFkSKtx5EUdb-b4cuNEY X-Proofpoint-ORIG-GUID: Hgmy_q9a9yAaiFkSKtx5EUdb-b4cuNEY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDEyNCBTYWx0ZWRfX9SFgarazP1bk vblfnXMYhRhIO3h5CQA/k6gKer93PwTfl9JZU6h5y3yvhefGixCdzeOiJJ9ifPsqJLQL0AFfPCM 1rP3ri/+Ctd/DYCVuGTbowL2+1kZ+ekAFHZ66rQQo+iZnATC7tNhsoVIYjajVh8lvm3OvEEwWNI JqCu0zoqc2S19lmomCEdezzGWlVzFCCk5Pd/jEBRtbAlPLXZSHzKMLYVBAwsqh72jVoKnjyqMl0 /Ven8ayDP4kX9lycCWC0YlQSKBdpeOLTGdPukw0UN6Ml2wtl38/y6UIaWhAGZ7IxQup8+Mo1Zr4 ypM4ERjsrmETURu9gjgT4YarBLCcLB6fweUF3N6wR3maGlFIL0BSGC2Vic9Hebqpj4A/2BjykkZ Rq32yraHPPPc1cd9ufvQDr40DMx5ycVUa4/XsJcgR+NLSySLsEWUu2poodV7nOIzc5xTvmOL5si Tl4JAFhr8Jr6TP3Y8Rw== X-Authority-Analysis: v=2.4 cv=c6ebhx9l c=1 sm=1 tr=0 ts=6a031643 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=QyXUC8HyAAAA:8 a=EUspDBNiAAAA:8 a=j4F7sB7NKAO1HzpnjMcA: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.51,FMLib:17.12.100.49 definitions=2026-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120124 If we pass a software node to a newly created device using struct platform_device_info, it will not be removed when the device is released. This may happen when a module creating the device is removed or on failure in platform_device_add(). When we try to reuse that software node in a subsequent call to platform_device_register_full(), it will fails with -EBUSY. Add the missing call to device_remove_software_node() in release path. In addition to the above change, make sure that we still function correctly if a software node is used as the primary firmware node. Fixes: 0fc434bc2c45 ("driver core: platform: allow attaching software nodes= when creating devices") Reviewed-by: Andy Shevchenko Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index f617e02b171f6e59a3c40504a71f8915a41e8514..d2f40b348f193db842aa7c17c9c= 41be59a03d35f 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); of_node_put(pa->pdev.dev.of_node); kfree(pa->pdev.dev.platform_data); kfree(pa->pdev.mfd_cell); @@ -895,6 +896,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; --=20 2.47.3 From nobody Fri Jun 12 21:40:12 2026 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 0798D4DA54B for ; Tue, 12 May 2026 12:00:05 +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=1778587207; cv=none; b=EXFozmHBb/avGnL1627VtX1ONeCF6Ke5AHCTQRCqpoSrzJ4E3iyYwTYtTfgy6zwjuNKrDumuDdmK1l3kz8632NRsv6vPxSjbuv3iB7SSLWjKdQ3QUO1aSVy9fknE14hATCDLKmRK/s2WToYzy72FwgcOsJUa359x9ZNl8L1teXg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778587207; c=relaxed/simple; bh=DeQzfE7uEw87FoNwrajQBxkZ/sMoxBLsCBYIPXjNSsI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ll+DQhmDoJeJsv4OteaXKHMLgpwnnRrEYL7cyLR+Zdm15JzGVMLXNqYuGBlpZcnvwvkyuFgbNew0n9faBPAUnZqSi2t2ZQfdrNUT3gHDFleWWrmioc5BSfMNyzE32+P6NjguHbwPFQjzrimxy/T8aR0hJRnjf2UKT0kQ19T2gas= 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=TcdXeMA2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QVztqr+P; 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="TcdXeMA2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QVztqr+P" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64CBceYR075041 for ; Tue, 12 May 2026 12:00:05 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= 34bMm2QC5D3vRxjYjMA8BCTGNq2X+nM48LZ6CVNLD7Q=; b=TcdXeMA24SddLE3F SfH1/E+iui1tlbkeFLLtpgiUiLCtbId1GDQjdU2rJ3xECSnZkOkOXIhFkbNF5drM /SiB6NoYCIUE4Nv49Clxx4GLYv1fcpHhQUgjfRLhl5g+hbKskItfjdTnTS11jYZu OzcPRe3m4hu2A6Y08pUPeYow5P/1unahYPu7nCf1umJ/rZKdAvUJphkZq5/gPl7q +CMvNiX5zMQz/UJ5Tsxzta28ke9FGUy9MwUagt3H3d3ezwg44M2qFXL1ugL7TpTM pKZBVNINGhXHJlntJORNa3qkFfb8Y2MqUidsuOAJERTSPFYP5ZyzRjC2AdavdTis v7XbTg== 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 4e43gyg53a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 12:00:05 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-515224a8aa0so7179291cf.0 for ; Tue, 12 May 2026 05:00:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778587204; x=1779192004; 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=34bMm2QC5D3vRxjYjMA8BCTGNq2X+nM48LZ6CVNLD7Q=; b=QVztqr+PDQpBxxgBDO8t/aEJkv9BH/+9Rha4W+/cbgIrcZCUSf/b3the40ADbGzrmY CmHHEYrdItcP/x7fdoHaT0XpmcMMELqJHGhZfH23rJRASNIOKcn1oDVbvlIzaluQQyIv lqcos9CKH9z2aEl1J1SxV7MUZunz/kCv9+hRmSdYpX3TnkGZnmDNtKtAGDW46Ex+fJDY PT0FxtcTPDtQy+rTJdZ2VYde94oigM2a+van7ZTTMOn/EhgpdEnif4m1hOyYlZYv27wv ZUGt3AlHMAZcZyNGeJ2hzDw0HWs9lMe64Y8wJL5fj7HkLAMOmV7ppjhK1zQkONIRIoAa 8YMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778587204; x=1779192004; 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=34bMm2QC5D3vRxjYjMA8BCTGNq2X+nM48LZ6CVNLD7Q=; b=ssgHzF7KIBiAU46/e4WbsWytCT4kl01JauayXzKjwKj55Sj6NFvetLpd7MnojBh4Se 322fxKEPGNY0IH8jWuhPsvbaUQR1f9qJYfDYO0c5xi3oBsV00Qy3tdAip8WYh9B8PMpC FhAnOTSYxP+szyTIPP/zlI/mp9uiQcnSC64JtiEBVMm6uQBDbu63Tx92v0/j1Xv7fmzJ FJX3JxRuJI0EZoYQ6E67pIOj3XhVpQIilYAvCBUiRK9ZWeluoXLRVRMnmPY8BUbIUs6N /YaI0Dm3YKEClH6HC/unLIKYuhZyPl2mdZM7XVwJWocubFjgHRRus+u006quYYrb+0wu 9K7g== X-Forwarded-Encrypted: i=1; AFNElJ8LIBOrGsr6zPqKXsa9X17DSLW02QL/jZ/79GSa9z84cMDGYzhJ+QLPddRJAUoqWEWuspwgdrd6lSoxe6I=@vger.kernel.org X-Gm-Message-State: AOJu0YwYF31j3e4Smceuh+Ml7e/1tRUMt3Q/7Lrfli+wpo2642tZfcyO YjiTNJ1ZO8WkGVrabOmbLJiNS12gbSi9FAXPGaZNNnj3ziftNkhbN20dlnQAouNFIUlS57Vh4BS gJfpnKTnGNnEnrdyMLhXaiplq9GJd2V0hw1F12LjtEfGyfaVdnG1e4GUpWr4zdjPzoY4OElAOVV E= X-Gm-Gg: Acq92OGPMgUkpaVVFM4LAij1R1ijr53Ddy0PHQhUkds8fQ7pnYzdXFqiAd6j6ywyboi HjY9T1EbVa1HuoQJan+N+rEz9/uScOU9F3/ZsHDKkVY9r2LGxpBdmawQxN5PIG2PlFwg0C+/uU3 UnXhKRYwuJ+199dU8F7hau/9zfwwPt/b/jSKybHWYKj1SYyuei3uCsDT2gHmdbS6xTlLb+U2bf6 jJi8nd3gGMcsOdmBJsW8rkmFWzxmSHcCluEaMuhZY9bKsdc1GenZ72ixH/5NfLsN8vQCZWwDhNb uYZxF1uCOoCNHnB+w5eGRxTfgvE19GWTmUy/x9a1scdrGot0CmwSCrG8vvIFZ3KK7RLaEK/M3di chEh7L2T7dPrd4iiAAA49WROK1t9kJwBW4rTz0mVW8CFKmi5G2k8= X-Received: by 2002:ac8:57d3:0:b0:50d:912c:c2cb with SMTP id d75a77b69052e-514d22159aemr34005511cf.42.1778587204412; Tue, 12 May 2026 05:00:04 -0700 (PDT) X-Received: by 2002:ac8:57d3:0:b0:50d:912c:c2cb with SMTP id d75a77b69052e-514d22159aemr34004721cf.42.1778587203664; Tue, 12 May 2026 05:00:03 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:74a7:1c82:3f14:b431]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e9067811dsm73933355e9.9.2026.05.12.05.00.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 05:00:02 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 May 2026 13:59:28 +0200 Subject: [PATCH v5 6/7] kunit: provide kunit_software_node_register() 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: <20260512-swnode-remove-on-dev-unreg-v5-6-0035eff63812@oss.qualcomm.com> References: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> In-Reply-To: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Dmitry Torokhov , Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , 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 Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, platform-driver-x86@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3107; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=DeQzfE7uEw87FoNwrajQBxkZ/sMoxBLsCBYIPXjNSsI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqAxYz9AUQJYLx8Gjc9Aw9y61bGXtDlL8RtTsEq ZrS1S1vhtuJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagMWMwAKCRAFnS7L/zaE wxhHD/90KCisG8rjredY8t0hKDZvnfuJKDb5Ib1/NvR2zJgo5hYH+7sRtl3DPo+ZdBdf09AufUQ Y6B+WgCIiaMT77J009hTBYLY7I74tS5YrnoSmpsLeXoVTr1PqwE5OUrzYsCKQUJX56izRh6ayEn CcX7Olv7f140cVo6FBRP2rLpld5eTf6pSYVRXl1OMlrFt+2QUqjIYFXIi4b6pm8Jn8+pINaSrdS IcNeRyKb+yf0pXxNYMqWpn/HYdMMTjV0NoTu2Dz/+LNF1BKbyJgPtsQyl7JRD3RFCPMIJ7oaA1T UR0FISiBtF/x4Hkcxz1Mx764PbpImB6T7j3C2KK3jMpCxuKmTqZ6I9BVCebYtIpn0yY62WouzT+ JPpGErbBgfUWIHUqdif653NyT4C4pQ837yvUsdz05uK0vhzvztBadDV9+xwe7rSUkinK5dG5WEO Af+gpi+zob8FyLwUgCtjs0wpHbvP/lxOBhVWAo9tULjQTHZD03dl1D344A8oHqS9yIyFOMyxOkU fGHnEjIfRuOM4DPXpdYUIyyFwtcfMhw0eyy0HAHfmkLACZtShOD9lj77RzE/m8u0MRgflgt+msw KdaBL2/2Wil0qqPX+fUjCB1+IyQtt14dw3dEVRjsVtr8CCwqwqIW0DjKz+s1R1VF8TRn96Y0EYH NKZMo+uDfbAxm7A== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=fMAJG5ae c=1 sm=1 tr=0 ts=6a031645 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=0NWOcHYCwBz2ZqcsIPkA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: Vk1aOUecK_O5Lu1aEBY5bESi3TqYAHHV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDEyNCBTYWx0ZWRfX+Q5KYrN9OPg4 yTQqZcNFeyY9aZF12BBcGVGv8wNOKODrfbuSpZE7qoGaf5zccdHVg3l9ixrzgDObhg1qsXjtrAz U1kxnZRvpi8zjlZjrgNUTQ1OInZX1EB9Q8htvNp2dXrpSQdG9m5DFbGsM7LP0ErqDWKZ3m/8PdJ tXaMFueYzS51eIhsnuzpApUxDSxrRZUdFsn39noNGHJYdIb0PbqbdyR4sDCbUdFr7jPyOrMMSFI 8OiufXwCrBDH/sluEvXZLYewew8dAW185EirPpcKvpsTlBAuIZSm8V6QxlYCoZktQlteoDC+XHN lk7b69186wk7zz0ZTjmneuEjn5KeoImckgeWCzBZRBXf+qXQFJPXb4zBBCYyfYNAbt/QbxVymHl BzyRO0f4+qZKbu01DI/Td/JzaSOGLueDG5Y7n4X0RY+HFBuwXM5ekQCQXRCafrGWe1HcIA5uX9C jyMGzhcliRJiBjvDjRA== X-Proofpoint-GUID: Vk1aOUecK_O5Lu1aEBY5bESi3TqYAHHV 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-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 suspectscore=0 malwarescore=0 clxscore=1015 spamscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120124 Implement a helper for registering kunit test-managed software nodes. Signed-off-by: Bartosz Golaszewski --- include/kunit/fwnode.h | 19 ++++++++++++++++++ lib/kunit/Makefile | 3 ++- lib/kunit/fwnode.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/include/kunit/fwnode.h b/include/kunit/fwnode.h new file mode 100644 index 0000000000000000000000000000000000000000..e1554ace64b8a5899aff9f4b424= 7e5157826a49b --- /dev/null +++ b/include/kunit/fwnode.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * KUnit resource management helpers firmware nodes. + * + * Copyright (C) Qualcomm Technologies, Inc. and/or its subsidiaries + */ + +#ifndef _KUNIT_FWNODE_H +#define _KUNIT_FWNODE_H + +struct kunit; +struct fwnode_handle; +struct software_node; + +struct fwnode_handle * +kunit_software_node_register(struct kunit *test, + const struct software_node *node); + +#endif /* _KUNIT_FWNODE_H */ diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index 656f1fa35abcc635e67d5b4cb1bc586b48415ac5..7549a701791b5b7eaa8e0637b68= 18cdfd0b655a8 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -10,7 +10,8 @@ kunit-objs +=3D test.o \ executor.o \ attributes.o \ device.o \ - platform.o + platform.o \ + fwnode.o =20 ifeq ($(CONFIG_KUNIT_DEBUGFS),y) kunit-objs +=3D debugfs.o diff --git a/lib/kunit/fwnode.c b/lib/kunit/fwnode.c new file mode 100644 index 0000000000000000000000000000000000000000..bc8bf06762dd71a741a3419c1ca= 04028d6ad3ec8 --- /dev/null +++ b/lib/kunit/fwnode.c @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) Qualcomm Technologies, Inc. and/or its subsidiaries + */ + +#include +#include + +#include +#include + +static void kunit_software_node_unregister(void *data) +{ + const struct software_node *swnode =3D data; + + software_node_unregister(swnode); +} + +/** + * kunit_software_node_register() - Register a KUnit-managed software node + * @test: test context + * @swnode: Software node to register + * + * Register a test-managed software node and return its firmware node hand= le. + * The software node is unregistered after the test case completes. + * + * Return: Firmware node handle of the registered software node or IS_ERR() + * on failure. + */ +struct fwnode_handle * +kunit_software_node_register(struct kunit *test, + const struct software_node *swnode) +{ + struct fwnode_handle *fwnode; + int ret; + + ret =3D software_node_register(swnode); + if (ret) + return ERR_PTR(ret); + + fwnode =3D software_node_fwnode(swnode); + if (WARN_ON(!fwnode)) + return ERR_PTR(-ENOENT); + + ret =3D kunit_add_action_or_reset(test, kunit_software_node_unregister, + (void *)swnode); + if (ret) + return ERR_PTR(ret); + + return fwnode; +} +EXPORT_SYMBOL_GPL(kunit_software_node_register); --=20 2.47.3 From nobody Fri Jun 12 21:40:12 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 03FE14D2EC7 for ; Tue, 12 May 2026 12:00:09 +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=1778587213; cv=none; b=CnoHAAwcBcaNOfCpLuoO2CguiyZRA+l5oX/gH/AVixYijlNjJFFNTdXuX2kPj4xjjgMPpKq+8WXp1DgT7fp+aWUGZoIKKjOqUYpmSF5QWckwJr6k5btdMd6G6FUZ2+Vr90MauhwjIAW9sHAe6IvBNkejW35LGDbU8//+QOoeB6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778587213; c=relaxed/simple; bh=a3kxmSehqMFl/pq1mo8hhGqnhavQ9y5hTS7eBrV7YMs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TsVnI7xOXjfQLFWxCQ2/GkKw8vOEE+XQlpXovRlUL0628isVgAc4Kq+capwGu/V8HkIomaMmmN/GNsFlu7bPgke29z0pXWyrcW8hbpUxZhS4womM1DMM+l50YiB9VIq7ZlHwCmjGiBqYDebjVs34Bte76hIz+B2v27uvazBUY3c= 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=ZoFeT72p; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DWe3711k; 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="ZoFeT72p"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DWe3711k" 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 64CB2F5V3385878 for ; Tue, 12 May 2026 12:00:08 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= 3czt389yZj9Aogyc/90tArENXIqN03I1zI6Kzz5LCmo=; b=ZoFeT72pfsOlM5d5 Q9P0d+U+J3+gLXzSIMulT3dlbBAysYft4DQmv2crK9iPt4dQ4LmSZpSintTn6g6a szObmua3J8j8AYmTtw2yCzfxYEWTF8IVZjtHo3a1sZM5+IZNYkh6M85Jx7pD6M4Z E0jrVvglU/QnPv0BFjeZjWqRnDz8F6Tc3lmLDrbRvGQLD7kCkXZ8H1urol++/oj9 W0BJ5mD/BsEwldkLMaqUDOyEP3PZIN+gDatCGQlcW6XqyJVDjsdjN7BrMHknxJkO zm0FGmPtBrSqOCGFbbGVeNeVLmDYdypc8n4TEo8RjMXbVoVdtfyhCoaQUNHFVff9 w97IeA== 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 4e3nv4k3y6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 12 May 2026 12:00:07 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-5156c85538cso2278721cf.3 for ; Tue, 12 May 2026 05:00:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778587207; x=1779192007; 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=3czt389yZj9Aogyc/90tArENXIqN03I1zI6Kzz5LCmo=; b=DWe3711kDV1koBxJ2pC0WrDBo4Q1Ai9vhd4M/4q1CC6mruFnMi7ht17173lj2tAqk6 wSW4zerz5nCiOqYxtmVtwIq4clhNkDLkGOKBERfyLqdYQauup8UB/Y8tpYbvLn2SIpqP sQMeuJKWh3WGsRVWOp6bzTgmAC4y78PoSCgj695BVDat/fXOl5OC/4ulmymAr7rL42kT xT+DY1lcmoJnbOb0YiyalM6HPOGgZAY9Mpm6Hs6Z69mxqHBbQ5mrjQfDot09m2HAF6BL zdqYHQs+cHI9jCiPmpSNmt6uq5IIMQBNaNpMSameUiOqZi58t3rmdZL2z351uXVDbW4V MLkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778587207; x=1779192007; 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=3czt389yZj9Aogyc/90tArENXIqN03I1zI6Kzz5LCmo=; b=N7cSPmIpuCAayzcYyYeWtGp8NMNde1DeWYXmb0Ky70t3SgMtz5OQ6ZnIFonaxhrM8p hHsNHMs3BYWvhPa/Ity+QMK+nEscP7OnnctgR71RWHnQL3cF8HLiVjmAtxttugaFR0Rr 2i9v30g+GzwTBqhsRTPZHO5uSFxj9AU2qa9VfSo4ugI/44w1FwpkNx4oABnsftb0d43F SgHJGXgulJ7tGYR05H0HJ8pFX+bkywibKm+kjvR3+dVfk2eBdhH32bYfWZWrHaXs0WCF unJQNFIuZcYw3zHcT5H1oNPLhr/TTNFBaRNP3kX1M3jFzmmA5xShTy00+XsykFZCm3oT 5Qbg== X-Forwarded-Encrypted: i=1; AFNElJ/emaXGLp2FYbzfGgE2Im8FkkfKU4LM6bT5WC4CVf9jPTCLiUNr7/29m0bKYJSatMV+F9/E8nkAOb1FXkI=@vger.kernel.org X-Gm-Message-State: AOJu0Yz77l6H9sa2kZW6WeyNwWgIeTmKGxyNOEGnLv3djNhvQHZ2sOo0 xw/fvCNguksH9UJG3U5+GQ1OJKK0C8EpJpd1vPjRw5Fp6jcnfmLje+QGsb5mSHtACMLkPA7zbDX 7VmVNsETdgLXAzuHeqlw+PqRCnl9TdFiRdnBUitAoBj9RoLfJNGDOw0Cstr6HBu6J+/1VvBxSQK w= X-Gm-Gg: Acq92OHIIMvUjWK4vg3XdUESIcBAfErNWKoB8pUtnEQTiPfiCbPNaHA01PRmHWh1WHo E9IsrlXdMJl1GBoZ6n/hn6K6UqdMLWe9ba8MtZkKM2IdLWaliz9hNcrGjp9ZwQGhHdYt61UI54V +NLvDGr/MvLGSYMu3KjW9QR+fXXDabxo3R118rflQEHhWou5j9fDjJLfBycL51HpasQReO3QtpB 43doLqMgIvzo8sDAFRqkxceWiDXNsCqdsv91xo28W+OqeWMkIqUSlBn7wI0sURjuRiFCAyJjsWE tmmPidNa3SyoqHGJ7lxMv2FtB+dlDVClh8bWJ3xjjwxNeHhOb9ktOBc6g7v+e3NQGe+YsE97lJB 76wJ3Jxa5MQMZdEHbND6r7202AX9kZwvCm88SUxudh2tt9R8LFvg= X-Received: by 2002:a05:622a:10f:b0:50d:9f33:9a5 with SMTP id d75a77b69052e-514d1c95f03mr36271911cf.23.1778587206575; Tue, 12 May 2026 05:00:06 -0700 (PDT) X-Received: by 2002:a05:622a:10f:b0:50d:9f33:9a5 with SMTP id d75a77b69052e-514d1c95f03mr36270591cf.23.1778587205842; Tue, 12 May 2026 05:00:05 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:74a7:1c82:3f14:b431]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e9067811dsm73933355e9.9.2026.05.12.05.00.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 05:00:05 -0700 (PDT) From: Bartosz Golaszewski Date: Tue, 12 May 2026 13:59:29 +0200 Subject: [PATCH v5 7/7] 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: <20260512-swnode-remove-on-dev-unreg-v5-7-0035eff63812@oss.qualcomm.com> References: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> In-Reply-To: <20260512-swnode-remove-on-dev-unreg-v5-0-0035eff63812@oss.qualcomm.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Dmitry Torokhov , Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , 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 Cc: brgl@kernel.org, driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, platform-driver-x86@vger.kernel.org, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6434; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=a3kxmSehqMFl/pq1mo8hhGqnhavQ9y5hTS7eBrV7YMs=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqAxY0q82yz6BguYdxjl79tf0UYUV9ZvHnFuzil 4JV6kOlroyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagMWNAAKCRAFnS7L/zaE w+psD/482da3lZmvP8AXgMk8UtergM9VadQZ3rPGL1A2cUcKHzFQ72I4AVVvjzyQV1PunFaaMBP 74XOBP99q4RtQE98xpAzl2c3MH4MFs4DaayIt8iQ5mwk64qP1VNKy0fh9uoOjy2pQ4aTVVu0pD5 YBDlVtLq1YbjRXkQhucfTq/HIvYIMMuQ+RwJg7ZmQJ+O13CVgytSC/UNuEn/w67ZS+dXJGWMD7h /eUhnsqKr2Unyj6z1SxkZ7eKDIPbUGfH8kKvCfSHZhxgy9WMekckduch0akl4h+62683TIF/084 RxPYXOdbGfkXtGVK0A3n3fAuK2zebzuEumuEx+fRkJ8vy+neiTjkih9pbpy490SEzhLcFYhuFi5 USD/vm4Xu+jk38fRaG5hmBsApNFXuOp7dCixEaeRFWB9/zp2JlKNm4XpeyclRGxlkwRCBckXZjz MglkJiWZyx71anTbKAjRqbWEOUPNHQz01VTW0TkCGMj1KtqnWe4RWFVzoyXg5IRXyXv5DkyKWrr rB6t0p6+iEZGSN17doemWdbwCQtqEI+zDL1anpySOeRMbGmPa2f908DK5mek7Hob2CO+Fk8ygoE lhcoWvgLHVUddfR723GeeozO9OAE3Nmkoqwe4zAw4bwI4TO0n+QzJkm5ad2SRusa1Vj+YyyWEjy he6MtaKzOkYICnw== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=ZrTd7d7G c=1 sm=1 tr=0 ts=6a031647 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=Cjzkl-VOwT-M8rwmhL8A:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDEyNCBTYWx0ZWRfXzxrIjQPcaACY /oRLTj+kEPJVky4rWgV67l7jcnIVoA2mLbinxeFM0DSajfVlLTI0J/yEH6oNLxuI8O4gAaQaSh9 +1r7dhYmw86PvXCt8FuMHtocb0Sm8PgJ+sfksP/Bt8NiIoVLIq//NqKPlo/0dvT0p11QXuXUWhT uel9QOi3u+mDQ541yR2SCZu4Ov6ktmWxtMPantXIyuY/V03yCooUXxn8vwzDwvfdDLpikHlAQoA e4bIS7YcoRFEsY8bKXLqXtTA3OZA4gobJdKcbM/gIgPsn4IQOOBT0zKUjBUEoS2J7SFt6dYzznl 5mPWwYNccJXFn1hwuJ9+q/XJ1fmhFAdFr1A9oUNrmw51apQjD4fT4lzs5ue5BWwOp/7LShL0bZc GwndOGxQO3QVHAsDIPwEu7jkJU1b2IZSi3MvyH2lfTSrbEJJVl4/bx2j93cq7B8LNZhQNQiMlJN IvDs6gk+dK9D+w6AeIg== X-Proofpoint-ORIG-GUID: ZWU-eCCK400o8Ixa7DT_Uik8f-zh1bSy X-Proofpoint-GUID: ZWU-eCCK400o8Ixa7DT_Uik8f-zh1bSy 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-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 bulkscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120124 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 | 168 +++++++++++++++++++++++++++= ++++ 1 file changed, 168 insertions(+) diff --git a/drivers/base/test/platform-device-test.c b/drivers/base/test/p= latform-device-test.c index 6355a2231b741791b54eb78af42e13f31f745184..3e42c205fc935ab1dd2066e257d= 4ecf837c9ad79 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,174 @@ 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 aleady 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; + int ret; + + 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(); + KUNIT_ASSERT_TRUE(test, device_is_bound(&pdev->dev)); + + platform_device_unregister(pdev); + + pdev =3D platform_device_register_full(&pdevinfo); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev); + + wait_for_device_probe(); + KUNIT_ASSERT_TRUE(test, device_is_bound(&pdev->dev)); + + 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; + 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(); + KUNIT_ASSERT_TRUE(test, device_is_bound(&pdev->dev)); + + platform_device_unregister(pdev); + + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, software_node_fwnode(&platform_device_= test_swnode)); +} + +static const struct software_node platform_device_test_primary_swnode =3D = { }; + +/* + * 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