From nobody Sat Jul 25 15:52:00 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 09FC441B8F2 for ; Thu, 16 Jul 2026 12:32: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=1784205123; cv=none; b=dDWwLWyArlzmeltrcEvuoTMVpXz1+TFluba5nDUPYuq73qEvhcpP1haSNqhxkEqvl9EPT65XlYu2YE+6iJ7zhytfHhzOS0JqhKJG14p6RwtKFC7foNiLh9NTbtE/ziodUj6olrTx11sEbs9NTSUv+s5W70ljk8QrNHVTgtYamRs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784205123; c=relaxed/simple; bh=8hpM+TrGfI2rbJN2akFn0gkqMVl45ni0Bp0sA4vGJ68=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rlhchcyPTM3h/vJdzYfHQdzOT+1VuJwcM1kdHoInMIdK7fhtcH75R0l6AHwU/rbtlLMj/HczS+rq3TpRnuVTdehlCUD20fafnrnl0rjOAN8ewvBtbyYSNS97XsUGWL1joxQGFDYsa9321U+czFy/u5gIRh5PdoIBFTFTYh71WYY= 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=eXuj5Xjz; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IWa3heKS; 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="eXuj5Xjz"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IWa3heKS" 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 66GBieEP2475328 for ; Thu, 16 Jul 2026 12:32: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= T/W6God4Jx8WMmxqemjau5eSXR0NRTo0Cd6tDZl/0fQ=; b=eXuj5XjzzunNm/PP yT0Me3iks0+irV4A1RWwsgN/fYytSkrNebwbB3QEFO3664d7gCm6E1ZZXeeFDeCv 6E4t5fQQOsPOfor26lfKXGo3KwdykavAK48uKvV9hEdsmqakxjsWMrt+kYlktFJ8 P1PkLv77JgWgLalKxdfAmOORicqGsc1EgOCZmK7odqU5NhSkJso0QHrL++bifx21 ifeVN4pLi35teK6jKFz3ZiA7Us624AVPJAG4569iETxdg8CcgdvKc7CEds3LhZOF AVJXVkfdZOP2NIyelNHFosMddhcOVXHcdZkEa8h2vJ66FcdwD/hnjGcSRiHInLv+ cW/1lQ== 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 4fetb7sbx7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 12:32:01 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c21c01cf3so63470141cf.2 for ; Thu, 16 Jul 2026 05:32:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784205120; x=1784809920; 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=T/W6God4Jx8WMmxqemjau5eSXR0NRTo0Cd6tDZl/0fQ=; b=IWa3heKSCmET5u7P0Pmw5vDcaXOFdXX2wMeUd0ZMBEXf/yAM7jxsIfR8nmQRwDO7dY NloEELzwx2K9gQ4P7vC557GsHbVEp9H4UAamFjEaz37ZnoPly8BXjT0uqtrzXPbZ9OXP YI7jti0OyPfgRGfDwSYbGK6FQ5NzLaNdNKijCvOjFl8/SqRvtUsc/OzCEVsy7FMLa2j2 ETTWUr7vlcASJLhy6TA7W6XdYlH9cLrIHeZcz9eb8dCTHOJxi9yTDW8ZsOyyJXBlUrwn f4jcx9sCO39DXOBkUkMqpi0rq7Ne5zueJaAW4H40jTpUymR3A9FAIo2W1zdBLcWoXWjR xQrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784205120; x=1784809920; 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=T/W6God4Jx8WMmxqemjau5eSXR0NRTo0Cd6tDZl/0fQ=; b=b/kxdFgRfCQZsf2nR9BHMrtsOvlDpAgjeyhaLqGDEIYPrOOsArvslJYKNQgdz0SkYX jiD9UTO0DhM1k4iTqUSvF8UIkou4GajJ2NgzWVexvLWLAUbskaQBueVEe1BRfmNWwsLb HckqtZJn9Q/c3eWwlw6utE5kh/fz5o895HkczNN4irXh1EwCUIVeyyYyYcppMeuLjQ6N n3cA61YudL8dOR/bGVZmWzpH6pIHRH9eEKAkJ13sjguC1+mT8X6n122nX6s7tYuwoAUf +B/hMMmOP8taz8toEhBQ1eUibhlqRo9FCPkWl1imKuWSZyqx0ksT4/2SxqFj2jg+hPUl 0kKw== X-Forwarded-Encrypted: i=1; AHgh+RodyHC+RN7s0n/47Ab+kocg6QltX0OTucQOBi6bpUWlwqq3oYIEfYrR3FHIJ+5AeI9ECDEAbhqN7urMlzc=@vger.kernel.org X-Gm-Message-State: AOJu0Yxdb72X6/R4XZkT6Wm30YlDM3EVrzVup7umbOt/aZbGxMfhS7jG qsTkP9cMrYpV6TnLIxSrb286zPpDMST241R6TznLsIhFrlXVjxlpZSWQHRcVy7XYEkoswS78mQD 6855mhQTkjg83tajAQ+ih6Sd/3WhKfymSG50V2S1B4ypp3BIHLrJszRg6IEpRcO/iVgE= X-Gm-Gg: AfdE7ckYhuElsv4g/zo0skASv6XlfcTli45/z6F3IJ4i+LROQFI7HlZOFH610qlPbDs PEZbxKvgFmak1ygtQK7d91tgW6H4/sEKAb2oHL3b8j3NEg9TxFs2tWaQvtX3/XH3j6/ZuXrMezs dAtxH0rEp7bFRc/yRghVDKS/Ddy2YnjBTEYwhrM3PHDCCNh+VWWKe27t0TA/D9O33w0LjcYHxIl +ks5/VIIHJX+IXNobWAo4hBoeCBrllCN7Up0rLjG0crjq2DVbL1CIn0lFzLUTWXCWAr0Dn9NYHg nD04/K2jxRka3/88nr6VrmuwLuyEjceNJXKE27XTAAHlAeAYthVIF99BYqCBW09PxxoqXe2lh9p Jg1ePOFsNEQvA/MAoa9v8wFV8Lx0= X-Received: by 2002:ac8:5747:0:b0:517:5e3e:526f with SMTP id d75a77b69052e-51cbf27a872mr223608161cf.52.1784205120294; Thu, 16 Jul 2026 05:32:00 -0700 (PDT) X-Received: by 2002:ac8:5747:0:b0:517:5e3e:526f with SMTP id d75a77b69052e-51cbf27a872mr223607781cf.52.1784205119845; Thu, 16 Jul 2026 05:31:59 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:76f:d108:485:5b34]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f464c7c96sm23766635f8f.33.2026.07.16.05.31.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 05:31:59 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 16 Jul 2026 14:31:36 +0200 Subject: [PATCH v8 1/5] driver core: platform: amend the API contract for fwnode setters 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: <20260716-swnode-remove-on-dev-unreg-v8-1-5c2b8cc38c28@oss.qualcomm.com> References: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@oss.qualcomm.com> In-Reply-To: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@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=3252; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=8hpM+TrGfI2rbJN2akFn0gkqMVl45ni0Bp0sA4vGJ68=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWM828c87nWIkYkRuS35nkpsw+eafF3SQ/NOI5 nZphlbwEjyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaljPNgAKCRAFnS7L/zaE w1PYD/0ap/sMPuzCQnZ66mfD+nEmu5nhkrMsO+nv/OYqI/SxhOEAqeCdbYwNEDMFBtr3nmItPBo izcMwlPWbzo3M8RG25l8zyCyI4A1dX3gx87PlsQauyNvGK5+EhyDzOVmKl2l0miKpRPVg6d5ePQ n6x+1eThx4PH98F66txfVbot1AKaqdqN8gfpI8QF/tJd5nvxExDKUc+jhcvgsc3gIfVKtf2l+Ml e5qIbc1muPS4/+Ysn8rVZMhCKLMVyLQ4Q9CO+HrHCibK9guPfwNhUvfWzKEXOmOXSiTBH02PXOY rZyiFMCDEPKnTyGDsZ5AwcaALmSJ5FauJf4Sr5/0MAM96iaPTpDVMFotgm67DrIQw7QIaBXAYJK wjzJXlMa24vR2eIFaPD24p1vSJ+I7epc4XBuIt2rdTEWeA0EnjrWPtOt5146iRgmlWoko1t8AUl v0FRoBfcfzmSf6xyNXi6652asT0Rbz+zfkIoveYItuvk1OG1mHE4I0WNIh0c84v/pmFIEg3QO/N 8CfVARbevx8CJnGoYN5SZkVPeHFRqrM6df/KRb3czazS02Fq2qMpHX277XkDU8BE6xBrOwLyiuH EwazYUjxAFzjcjYelFGMIggKKVRYZ4U62LX4kx3M5rno+x07Y2WwUUEbkVLd7XrO+TNeu5AU1nO vcwxjx4pFdq+45w== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfXwUx/tGw0pml4 0h+E8uIQwE0dUvqXevHdP1vY689AVJHbNvZOkVwPyoI1cH6UBlTchHmZWdtsbH73XsYB5mnbwCC Uj2ed95krew6+9I6w5wi6NO8QLAOEUo= X-Authority-Analysis: v=2.4 cv=dM2WXuZb c=1 sm=1 tr=0 ts=6a58cf41 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=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=UJBV_kE8d4TeT66hubMA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX+ylvz83ISf2s ZMIiHdgj27cB9LOYIbPAkHOMJvUQX9RsQw/db8h1X6Pxs2eFCPPZWA70dvwnR4h2PQG0aZPTXRU ucszIRobTrNS9Vgk+7fWKvu0jU6b4wiutGhW8umhr6acP7r/HN/H5C9LYuRkKkiKLuVjIyxvDuY siSwdzEt2d66P5HAJO/W7eGEwdcLbJqtigi8VhrR5g//dk0775uwRB7K5iLPqGn1H2rDLxduPD/ P2hO1Lw8fI6kEr3rP2BXrYz0QzcO9AkiyRuSUpnZq9SB1CuHUxEqxfaijrtKCxjVri+YR1690bN Oj02X75sLQRn0lH4AqzabqN9uW7svEQq+cFjsYVZ4jRvbQT3Y0ErI7aGMqfL9hlSYT90lfp6+fK VikSw/bpBugWpLZTnONOeiG//4udfPJCndeOLn16Sg6HNtW9kIbQFgybsMYxs5K0lRfxlwdX1TA fP9sj/wJdjTSrtH1GgA== X-Proofpoint-ORIG-GUID: NJSj1EsHHU9gE-PBxRPBu1Jkdk1vn4_N X-Proofpoint-GUID: NJSj1EsHHU9gE-PBxRPBu1Jkdk1vn4_N 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-16_04,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 adultscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160129 Calling platform_device_set_fwnode() (and by extension: platform_device_set_of_node()) of platform_device_set_of_node_from_dev() for a dynamically allocated platform device whose primary firmware node is already assigned and is a software node leads to a resource leak as we never perform the corresponding call to software_node_notify_remove(). As there are currently no users for this special case - just disallow it and warn loudly if it ever happens. Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index a71015f1d915340aa01ebfae67196d4d7ccecba8..fb57d487a6c2aba799b4ca5ccd0= 89006cf2d8bf6 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -707,7 +707,9 @@ EXPORT_SYMBOL_GPL(platform_device_add_data); * * Assign an OF node to this platform device. Internally keep track of the * reference count. Devices created with platform_device_alloc() must use = this - * function instead of assigning the node manually. + * function instead of assigning the node manually. This function must not= be + * called for a platform device that already has a software node as its pr= imary + * firmware node assigned. */ void platform_device_set_of_node(struct platform_device *pdev, struct device_node *np) @@ -723,11 +725,20 @@ EXPORT_SYMBOL_GPL(platform_device_set_of_node); * * Assign a firmware node to this platform device. Internally keep track o= f the * reference count. Devices created with platform_device_alloc() must use = this - * function instead of assigning the node manually. + * function instead of assigning the node manually. This function must not= be + * called for a platform device that already has a software node as its pr= imary + * firmware node assigned. */ void platform_device_set_fwnode(struct platform_device *pdev, struct fwnode_handle *fwnode) { + /* + * If we call this function for a platform device whose primary + * firmware node is a software node, we'll never end up calling the + * symmetric software_node_notify_remove(). There are no users for this + * right now in the tree so just disallow it. + */ + WARN_ON(is_software_node(dev_fwnode(&pdev->dev))); fwnode_handle_put(pdev->dev.fwnode); device_set_node(&pdev->dev, fwnode_handle_get(fwnode)); } @@ -739,11 +750,15 @@ EXPORT_SYMBOL_GPL(platform_device_set_fwnode); * @dev2: device whose OF node to reuse * * Reuses the OF node of another device in this platform device while - * internally keeping track of reference counting. + * internally keeping track of reference counting. This function must not = be + * called for a platform device that already has a software node as its pr= imary + * firmware node assigned. */ void platform_device_set_of_node_from_dev(struct platform_device *pdev, const struct device *dev2) { + /* See platform_device_set_fwnode(). */ + WARN_ON(is_software_node(dev_fwnode(&pdev->dev))); device_set_of_node_from_dev(&pdev->dev, dev2); pdev->dev.fwnode =3D of_fwnode_handle(pdev->dev.of_node); } --=20 2.47.3 From nobody Sat Jul 25 15:52:00 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 D154C41D4F3 for ; Thu, 16 Jul 2026 12:32:07 +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=1784205129; cv=none; b=boLZ2FBZBhSSQE6Qc6/Xuyrt4goClpinaXR/t8T6cpTvSfZwNEMCJM+hcTsRuJclKly17naVLyEYwJpw3tBygTHOVdTqAom5h+DoYv3oF4pdMTeDtDAOtuBMj5Frt5eBH8oknh1xWTGpTWmpekWK86CklWrSueXoXrkp7GZwSp8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784205129; c=relaxed/simple; bh=V/KoRkaS+83usWGN912iUHUZ0L9VCW5/9FGQG/93XDA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I4zbiQ0h8K6mH9KVTkDhnHhxHq2Tve6pKMntGVdqwuzR5JXnnxQG44xucdYZP2NL3eGaNKw9fslpT6lnQ4AJpDB3uOvAJugCSUo4c7tfZV/aCMhl4XeCoOt7Je9iBRCoqy5Sc9fx8JDXOafYSfes4xl/fObA+bTHzmlmwWAssTw= 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=NzcA/YnU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=kbsg++2v; 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="NzcA/YnU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="kbsg++2v" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GBj2SH2731890 for ; Thu, 16 Jul 2026 12:32:07 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= 9l0T0GCUa4XXTn8B4it8C3G46rwuAieDuTvkXQVUEaQ=; b=NzcA/YnUIFTOOyx7 6f90moPDulXAs6HdrfRjnL8ufIMakApXtUwSx6wEybdv18wjncn1AKp7xMoe/dXB FDlhFvPFLeDp4J4p8u7rfIAwTG1MScJHwOOwnFgmysl/FDfYZ5SrSNE3juIQ/7pp MaMGUEzghiXsUDnT4MGKzBIIB1p1NovjRen1C/gMPEbBiUSRYUEe/58875T/RWcp GXX4l/6MJrWTNzVSiirqEJh7j+WFr7CFT4qgBZQsHvF8hqHhOwQXK7IAJXBMW/I3 jQjiUgyJnZtF26R6zwungofLPQ5Zicsu5MBNc3Ueb7GpytHRdpuMP4/nH+14RG/w BsmlXA== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fen4waddf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 12:32:06 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92e9a2b95b5so679785885a.2 for ; Thu, 16 Jul 2026 05:32:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784205126; x=1784809926; 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=9l0T0GCUa4XXTn8B4it8C3G46rwuAieDuTvkXQVUEaQ=; b=kbsg++2v4SeKksDIMLGqlPmEMsu/5wRQytcoOsw5ptKb6VZY5DvEsHgLupQuYBIsLb Gteh9E3KS78KWbvTzZb4+iMXpOvrlgPHMmZdy3kKu4durRfN1WY4NK4Tuu70i0pBaV5c UURZcdWFaD1kxarVrC3o0R0J3/RCta49FktzhDdv4zt9RTLEF+BLrgMscqB8CBFzD5lD V22JKXRxLF9024q9DXTBdB/R3QrtN07Z6rmDadDjyAwyRgQHXi3KFEiJdw3UVsxmkcFQ h7gXrQBKZCkFd80OfA6gwGy/35vNfJdG2Ryt/ULZVlzse7NVSPSWxXHwxnO0H5UK4Fm5 RRhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784205126; x=1784809926; 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=9l0T0GCUa4XXTn8B4it8C3G46rwuAieDuTvkXQVUEaQ=; b=iDrO79o48Dph5TLz3L8hEdJw5U7AdsIOgcA2sjQe6ODFYBhB2eJF7IYS9xcQUsbpQX uW14oVbUDx3qXzaZgLCmVZddM/es2IvcRmJ11F4Y5r7CzCU+iethFWTMOg0ZPhKqxPUu /jlAUcNRGF3wMteWYA4YYSwDY0BTyjKs4NWUbpUFgIQEEJ8TrVdgSQhnQ33FskK/BDZ4 U9Zm1zP9VPCLUyWaPn1Qvbz2Eckp4NlMMTYjzhMjNKboZgiDculaWJnVoZNIhVHUuitw r0BBuC2RtgLr2oLOQI+RPuedpSgmwlygd208aQoSfwW9XamqUM6jzviYAsBQJvSnOdtH IAHw== X-Forwarded-Encrypted: i=1; AHgh+RrLS9U95kp7usDIce2x2BFGbUQUe7Zf1vN01XJG+pYsAmeGmDZLbBLTggUG/k5C5Mxrs8vKh0arTOeJ/5A=@vger.kernel.org X-Gm-Message-State: AOJu0YxQEmOLH0acazBrO57HN2di5hjfReCwHWmsW7bnkUdkg099DXkg MkYmjrWa1TC737+5C/Y7jwT5+ELqmitiy8m92oovwJPBIMd0rqoXBtmOy48N5hSVzkawrLvl0Rg PR1LI+ObdxGwMEu37JPjNvfNFhFjU32po8dpG4oKNVzI+Tujmx2ZX7LuHCIq214llu64= X-Gm-Gg: AfdE7cm1DA8E68DuULynoRYrP+qg65yVvonBoIfEVmH0eG41Q2Xrfu7mDk9h9iZUAj3 +3fbbA/ZHTSHmGu2BIYUJObY8tnfGsTKqcXrmmaFGQTW77U/z5qr3JHRjAK88+IU0J+//sLk2AU doXRkSpCvD2vl//+losk7UFgbxL7AglrV18cCRv2EnQRm335YzMK6M8M0NPLRkjVpv3iSj21Bph +WEp1rK6G8JB1H0sLGKkT4z9ATbMm82P7JvwoNClrgTycFqFuRcL9mWAE4+iVuqjoQ+123c2AZJ lmK6P0IAQN/kN5aj1Lsv29csajd15DNQT47NL1TQ9P8VgRkeoOr4dDO2vlAW3ioY0YzEIJXTDKl B5M/SmNzd+VdweZvArK9xHgMCecQ= X-Received: by 2002:ac8:6f16:0:b0:519:f59e:8108 with SMTP id d75a77b69052e-51cbf1601a5mr221555111cf.31.1784205125709; Thu, 16 Jul 2026 05:32:05 -0700 (PDT) X-Received: by 2002:ac8:6f16:0:b0:519:f59e:8108 with SMTP id d75a77b69052e-51cbf1601a5mr221551271cf.31.1784205121589; Thu, 16 Jul 2026 05:32:01 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:76f:d108:485:5b34]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f464c7c96sm23766635f8f.33.2026.07.16.05.32.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 05:32:00 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 16 Jul 2026 14:31:37 +0200 Subject: [PATCH v8 2/5] 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: <20260716-swnode-remove-on-dev-unreg-v8-2-5c2b8cc38c28@oss.qualcomm.com> References: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@oss.qualcomm.com> In-Reply-To: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@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=2590; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=V/KoRkaS+83usWGN912iUHUZ0L9VCW5/9FGQG/93XDA=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWM83p9RhBwshF4v+CF7UXRSRfhDVORsXqTwJU 8v1VZYWbjyJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaljPNwAKCRAFnS7L/zaE w6bLEACeQ+4V/bJNhB1WQ2H6dfrwOUnKDGZwjMD2bpdwuqfEUzAcCRev4jXklTgd3KmKQmjvjJ5 V3bviQgXPe1vcVXP7uUFN79OgQBkLMfH5mKJ62AcgOSKTLmBFYF60GRZ1XMuQkUpRP/Ambd4vzE TaTvXhASUgCDA32nnOTZgkLMvUPoGv5kLBBdOBsUBXGin7coEH2npQP3i8dsVUByeNzfnmmzVys isOEE3p8B4BKITgqM3lZ3dOSqEjGBHyoXvQouFqUgJuoEou30Dk/QYEmb79qDfFl7hbdrITIOgG S+bLySv/eAgRKWYiy20yFKIxiJPzWIFLXt1FhfL0TNnmH6AnV7XNaUH93hbP2OGsngqLePWyVhC KA/Zvzt22eJFPxOgiwvvyFlHxVcqqQ5Ss3OvTXhhBcQa1TKI5nKm/QKZOaBwSm/ADdeVso2VXJO kyI6h1udNzdLEk2RY8ueGxWZXQDO93MXaJDTajfwCcL00Ndx3wlylUSeX30NeIEkZ3wVEBT15ep A8epEbSZnjjNd2P7VgEy0e8Qp+qVu6zAuF4GIwwtOZOshdSxyM6rpOvY3N71NS7IS2ZpLH2kJ7L dIPr9hKSDR5eA9cYQNyAlbPDR05FixCknh3x1NSyMUCBws7Xd7DO0JhORd/gGknYTDtwuKgN9tp c/13CIP8A7ARwlQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=PsejqQM3 c=1 sm=1 tr=0 ts=6a58cf46 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=QyXUC8HyAAAA:8 a=EUspDBNiAAAA:8 a=vKDqCkOE6BQjc6v61vgA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: uw00FIUSkEdxwPGa2P3MSRDDgsc86Nr4 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX4kehJbmTMScC clZnIH1PAFzphr12IdwQWrmzdqbiHIFsIW+yqoWnhW6lZoq2SFoG4Sl6B8+0nzG6OqM1EZaAuGF yl5HQKUInVHq7iMsnnynfLfio+YXoI8= X-Proofpoint-ORIG-GUID: uw00FIUSkEdxwPGa2P3MSRDDgsc86Nr4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX9ncuTwR5kosH si2kpaSclvcMWH+5fXV1zEbvDaXiUT6Gj7TbhqPpYaZ1sv+vDvqQYx3xgkyL0hfhuJd6yadvHfO cIA/NBFGmFRroQ/5OgDShYuJDomKw7qiIDpxta06h7Vb3a7mowgL+d/o2MtvnOE/U0EaevK/A2O ltlJGBU+xf25FRC4S6Uz3Z3KxjrGa7NF61F7aa1zTLrPfQ6vghSwQTiFqXOc7rRyLPIUpSPOZxs a/CY3mWOcLYE/bwTja16DwLfP1rWvji/r3y432IOZjMiSbBaC8ht8W25ec6+HbcSR3mPwgzmBlp zlO//bmtLXhGCrGM5AO4u9bvZn57EJoWssxwKSGh0CzoVSrj9ROg8MHV7YrWnc221abjRZbOszR 5LQry2BfPXxtKyTrSSxe7oKdcIqcRpInhzbmAkzPczZUIMchtYZCUp1AbVB39hJ64mSBBgQQypQ 4EcajBF2SS0fQgKKVKQ== 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-16_04,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 clxscore=1015 bulkscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 suspectscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160129 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. Acked-by: Ilpo J=C3=A4rvinen Signed-off-by: Bartosz Golaszewski --- 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 15:52:00 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 8945E3BBFD2 for ; Thu, 16 Jul 2026 12:32:06 +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=1784205130; cv=none; b=QqCj5V2zGI73O7g+Mq0sLbPdpMKC7OAe4LQbedGoA0dagikuLTqbBJVjjmrBWV4rCE/pn8No8EYfvkFQh4Suub59TuMnO2T13gwal8G3vveS9rm+3xjWZU8d1YKvLLbi4S/UGm0YF1GeweTx2DLfAAJ7GSh9QP6JK9DP6XbKBcQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784205130; c=relaxed/simple; bh=N9AP3SYxejXwZhikmnovuItOtHN2XBZf83KApz5NXJs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DEFMU6Y4a4ZrhDKHHJMEDqZhq1ezrgXyJaXB4+Cr/Z2xmSEQACJtehw+Kg67QwyJuxCi2fjefX4vOuf9tXwCV+2DFfTSs5qZRO/YBA0QsSbvVrl60kbT1cvPdUTIspPZiPi4WSArScEzlD23leU4WMSPuTVAXk2Vn4N7djHeJp0= 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=d+Kww1pD; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=K84IvxSD; 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="d+Kww1pD"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="K84IvxSD" 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 66GBiqP02355571 for ; Thu, 16 Jul 2026 12:32: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= 3y0IvySJBouPRgIKjp+IRovT+WNJHA9QwSsnhwUAWFA=; b=d+Kww1pDbw8BsEPL G38+XoN8euPnjzHPwfhBUXjniQCm2z1F09uU2lG/WiYjHy3Mk5sRVLfeFGQM/5j6 Lw4nkGpegPpQ0y7OZMlJdbDwoAYBTLLYjSX2acswSGc0bo8IcC4r5McqdPshTD8k FF4NMAtEUlixWJA66e4PhyCEW03+LoyIERhx+EMuyLMjsiFItgkKItvZH3dj9ONp H32KgxRSdow0HZbKLEa7vnpMEHE1lrTE6yZy8TEA/YJxh9Oliyd9LyJTB+t24Pm9 wzhbmi+D/HurAmNTeAM/fb8SuryK9TAq2ytVVl+cYR1oWcCsB1hME60a2ttblZXx wlWPZw== 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 4fed064bqc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 12:32:04 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c07f25de2so41666161cf.3 for ; Thu, 16 Jul 2026 05:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784205124; x=1784809924; 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=3y0IvySJBouPRgIKjp+IRovT+WNJHA9QwSsnhwUAWFA=; b=K84IvxSDbIpqyCINU6QHe6zwrWwEk/JXeIpLRh0reNiio7AGsTmRXa+qTuIjJjdesC e96VQyZjHjnQTyg8NwQp51og8HpW81q03FdND75r7wfSQay0yozAZyW7VTgLcTGwTGR5 1R40wtR1aGCUEIiozSeCoocZhWjFB0W1ui8xt7l8Qq6C56mNLNOkL/YnejdqObLHuxPj 3Ogqx7B5apevnwoeIdTADSnZ65j7TngyRe63TyLRvYGMgjNJtKvqonwYLkLIgOyCxkCr t9Spry2RP0TMWbFwFfptQpR9cyF30Y8/4tKudZKWLM59Zgw9XpAJgQYsaffpfLh+CbgJ LpWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784205124; x=1784809924; 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=3y0IvySJBouPRgIKjp+IRovT+WNJHA9QwSsnhwUAWFA=; b=q3VGFTUXJpq8XAKYcJy3l5ItqCR71CNjTWqgw1ysstvOaPNEUna2IAhM13KS0qMR9T TYwWrzp7fnauS811gVns3lpu9MiLF5QN8tpnbB6e7oQU3LlOwl/eQztT0OlT8ZVEiWVD vqre37SklD4t8Jiw51c9/Uyrk09xcLsHzwSiNuoHl2p5kIMOFq7FbrqCXVpPFfGrBjPx TUWQ7skKiIuiJ980ZktSWs3LsdmR7Yh93fualTxmdjBhIBYMO0nZjF2IMj3RSv2Ds5MB ItNIYKwEVongYXoamvnnVJqlvpqvt1TUyaIbT3yQgAza0qI/pHCuNgrccjvEOIOLl2CN vHlg== X-Forwarded-Encrypted: i=1; AHgh+RqTQ8J6GGvcjwruazkwopB35Zsn8Y9lsYy14hncdyrMwYtKbYSduip+rQoaSKWMpzJcFLJFjO5A9d0HZKs=@vger.kernel.org X-Gm-Message-State: AOJu0Yzd6ra09lsS5SaQrXWT6eo3T5zXRnfvJG36KS9UBt0GIjmuCAuL bzS29ZBGAg+7ffh9Ihmh92CSp1Nod8LlTwKJjAzI2iyao7921ltQAD7VivSLtnaT7tNvVHbPY9u jYvWn7h7WHQcunC4ddx8bAVgYreUS14F2/pqx5N9mWv53nXC2O/OM1UVrIWmfOcDgtng= X-Gm-Gg: AfdE7clKWEIitUQ1gZGCiQyfVKzzb/GwkQYlV7z4YFuaEzlZcLtMood1I/ys+N6r2XW WyVqJDkx0YHf1Kx1EkIqDu9x62OygIQjrMEDZHq1/unwX2Bkseh1iZKTpik/n57FuurCMLIschd V++DOdD3Ukgn7vKaEi6vE4gB6HcMB4KI9feW+vCXCO8pCoYO2up9WmC5QY7WawMxlX87071LHE4 u7XEbSExCSg7l7rT7iXl9SdzXgGo3gLv8gZP9IziJ0xM1EphvEF23ODZXf+QH9jUgIherRgPi8s yDNvCvEHEpU07fY9n4MFVPlty/iNYDn0TRbxVY/9yoY+r5DGMhwC3xVBe8Srz8eA8mnBizsXh2J VROBzSRe9NEhbCREnC6F1p1fUQI8= X-Received: by 2002:a05:622a:5c0b:b0:51c:7d0:7ed7 with SMTP id d75a77b69052e-51cbf24a901mr225502031cf.39.1784205124027; Thu, 16 Jul 2026 05:32:04 -0700 (PDT) X-Received: by 2002:a05:622a:5c0b:b0:51c:7d0:7ed7 with SMTP id d75a77b69052e-51cbf24a901mr225501391cf.39.1784205123470; Thu, 16 Jul 2026 05:32:03 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:76f:d108:485:5b34]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f464c7c96sm23766635f8f.33.2026.07.16.05.32.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 05:32:02 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 16 Jul 2026 14:31:38 +0200 Subject: [PATCH v8 3/5] 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: <20260716-swnode-remove-on-dev-unreg-v8-3-5c2b8cc38c28@oss.qualcomm.com> References: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@oss.qualcomm.com> In-Reply-To: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@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 , Heikki Krogerus X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3182; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=N9AP3SYxejXwZhikmnovuItOtHN2XBZf83KApz5NXJs=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWM84B4CZo/dOB2syOtU64FTk1R5pO8s/CZfq9 KDb7tFbYReJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaljPOAAKCRAFnS7L/zaE w4uvD/4unAYN6h4orRS4Qx06lB5hF5W4abKelOlO+kea/N2ACPE1RjvtENYOim1DuqF1YYahceW 0o/eeFpQVa+J5C3TuanVNe/pFfVPQGJmYinHXmdyzRT5OOFOkXtXB/TaFB0VNm3/sTYZQEtHTVE LdTtmW9sv43I978VkwcnpTqLvYd4mpgDTc40WpsbyRQCOkfb53h0gEroKzx9BRon86KnLiE3IJc wzoFo4yUOgEC6Lk/93fRpgaiBUN4wn2mzTTOGfE90abwQKNwh6U/Di0mGXnZOrMH3WW4Z7O0YHB woTuI6jlG9jzMJ3S+Bbr742Zyhwc7kxNA0aCmoKHkXF4bgYsTE+unyMIif8MQgP6/MhqLzuIfCR QLUxvf1+Ck6LtuSGuSFed5i9NiN5S7FJhgNh9qjOLlQP3LG/E2QsGaJkLNNOV/p2bbwXPlnU4+2 lm17JZs9+5gQfVQ22itFzbErCzxV2THEmdjnCtkDI3vhjBwUsFCHMGlEY3iW9y7Azb8N7i8/JHL LSlPUnEdU9c0iBZj1AkO3Uedtoeuu1cv8T8WPgW41si1nD3+e28cK6HNkQXjPjs/Sb9/1lukAOV w+EKBHvo4kOcfVX/PdQwR5zepm2AhvHCXWSPOLnsUplcyLGcF4SjUxw+1pCmZqGuMgtrp1phMVD rKvLJIPfewBDYjg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX9/ujyS/I9oIz 3xbaDn9pWnPXEBK46OmxvJv2KaoqWxcHy3cASr4gQzuo77pOOpG2xtNk5lt5ELZ+9gHIKotPnq0 tW1MJ8YyTMuHe0WV+5oIZAauMv6Lbzs= X-Proofpoint-GUID: mSFYFZB4cGMjqFtztNeZ4v6tBgz9f7nF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX3ziQ8Hu+I87h PtmFfP+MBkqhupjZTn+j4Ay3w3y+9e7fGgQWf8Qi7HHTRnwiwV2Pr8KHNM35YnC+CBUSVboxj+8 ARjK7I5z6CYWB0l/f+cZYSSIRwB92zA6O6Z55B1BHtkdyrROv+zc+o4WRJUjRspKYWw/N1vVed+ iI9wQdkHxU0LbcP/rOL4P4drIuc7565WIKUIkvxyvAqMmJER9EsQVg2r/WUefim63bjIMTt4okQ +fZasp/oudXCtlzgHt7XL5clN2b6V/tc5EsbFho1eh4dJGDKLi/jvQ3SZ6A1P9/ONB8jeBet7jK wX2an/5h6Q0O+67LP5GZoyK2tuhUjCaxv8vyR2YgZtJ+Lo/17wlHrr0KqyR/GMOKj4g//L0TQrL y9ZofzjmDpNf0uWpC+H/bAdS1pk5P7REZZ5Iik25QBjTv0XuOx04AxKVpXEwDa6zAOLuT8VqCQx HYsqxUZu+CwsHSvrQ3Q== X-Authority-Analysis: v=2.4 cv=Xb25Co55 c=1 sm=1 tr=0 ts=6a58cf45 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==: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=QyXUC8HyAAAA:8 a=EUspDBNiAAAA:8 a=djUoAwcJM79xP0FpthAA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-ORIG-GUID: mSFYFZB4cGMjqFtztNeZ4v6tBgz9f7nF 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-16_04,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 impostorscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160129 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. Reviewed-by: Heikki Krogerus Acked-by: Rodrigo Vivi Signed-off-by: Bartosz Golaszewski --- 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 15:52:00 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 0F7A9414A0A for ; Thu, 16 Jul 2026 12:32: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=1784205145; cv=none; b=AUpb37EgNnf8Eyq0PHxckb5oj5fJvMihkADsYn/poTOru2uUdytTFRC96lo6A4bV24zIeED6BF5OMWQS+eti3oHD74yjJaNmYBBMtyRTJt/5Km355/SXdWFmjeNmp8+Ukr+DW/1BNsocACpmiDgdq3tve6mrD4259+yjTIGLoX4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784205145; c=relaxed/simple; bh=6y0x3dVDg6MbsMReImz9V4/sAZmwhZnLqrvpq5yaKmA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EueC4TvKjERvGoKtdluv+Aeh4P97zhqRFbmdlCegYYLgjW17l2ai5qpHb4X4yYZuPcDD6x+jUTPNy2ks02OLzH/CSFZHrJ8oeauGKCAITN5vBm0yP24H78CM7CxJn30MyveZ1JsPM5UuF6K1aSb17VsJ5ATpmtwkMPGNALO75fY= 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=CRgQrzqk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SgJ3jY1k; 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="CRgQrzqk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SgJ3jY1k" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66GBiZ7f3747260 for ; Thu, 16 Jul 2026 12:32:23 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= qpH00IOQaI/bqw5+PSR/7ymija6RdUIbqHVAIBnnA5M=; b=CRgQrzqkesW4oIVV 7F5rRIcYbXHguAE155t4EsEGyed4PIJd7wvNTKx3WyzV42NKUI+fjrqNFoz2hi8s DeoZ0QWzERUbfaSebfpdqIVUcP64kxGyhlM2qYur2YTaPPC+zuBh/FFWi5pdp5uw f/S8jHKypi+wYU8alsaEQabyyZOK68kOd6csdaJYkY6PAT8Ll0yovJDve+kojGHZ GBRNGxfNto/c6Wy9Zz8SzbCi45LG4qcf/vUKUlx4RJSoBcWeBgrZSVBHx2Fh2Eaq b/CsYkB1nNhg9LPoe+jXg+OM7uPL/av1dl1g3dmn7zBMX8VpbjiayLBD5RbDS51i 5uhETA== 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 4feq3pj4tk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 12:32:23 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c1e6f602cso60740421cf.3 for ; Thu, 16 Jul 2026 05:32:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784205142; x=1784809942; 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=qpH00IOQaI/bqw5+PSR/7ymija6RdUIbqHVAIBnnA5M=; b=SgJ3jY1kwbJo+h6pb80dZ4+aacFo+OwfZHMCu0CieeFj72R7NVACXIIXr66Ze+NTvR hZX2q/eNShrO45YJLEpfAGbCphH3RRW8/eQOWxgjox63aF2b5clbR9enqPCjxT1IQ1sE QHxHuTmPtYyTh4JhjQY098HbdpKiIJxd9X8J9OdlNCSMvRBCmAvZTIuQtmLCLheeLAXv 1Kboq3mvCG1ufna6O1DMSgtblQmpd5qtFmp3HBanpCXb7bDE9V5KWSrHJZa8h5TyF2S0 B7J9Dl20bmXvwdF/VKZEkhgRl1QQ0ranfXIDPzC1yjpneFBfEEEaEZZlrJ4DTov3Ef4s HXkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784205142; x=1784809942; 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=qpH00IOQaI/bqw5+PSR/7ymija6RdUIbqHVAIBnnA5M=; b=YSQXxWMymJ3wK+vWOlWqum8f4Z1Pha+RHvSuDTfkjd6L3iln3nVZv4IAR/WeH5sW5n hX2am9abdbyqNnDA1v9xev+v99h/LR2HJadDv/ffTi5gPW5ooxnlAys/eqaD3Ge7w1TI ERh1rywEt+ZyyfAV+Ll4PeQQmx1jiZ+j5ntURRYy0MtZXJ3B7yQogMzOxknNRVSH8kHL kTbxfRTvk8FchihaRPnJbvQ6NLKOxCDdbvzVcx9fN/SjdAe3rsjqfSk6771jCo8Asyru WBU0SPRSnHTKg9KR7oUlZmOviRE5ENCNHN6ToA5sTaam1VEjZudELdn2OznLFvjYLaWt kSsQ== X-Forwarded-Encrypted: i=1; AHgh+RoDFg6M/gfbAU6ZWp1ywMW2OTN5WQZmm6J+HD5nod09Hb+e7zoTb7XFFmt/2yrbayUoKl39VDX+OUorI2I=@vger.kernel.org X-Gm-Message-State: AOJu0YzxqApPUxb0gsllLSqYADkGQiUv6LziOGZnRmkrqkr6Dv22SIno 2dx/VLtnCoFs/TG+3z8rUwwp55DXkr+cwHjx0DWTmdbK32TIhnl1OoY4+fU22LM5AlRHMYPZl86 urbzudkMA5VBsVC9FT5d2o73uyBH3tyEbgIQoqHgmZWs+gmB2zDACtfjEVLCEeyg0Ruc= X-Gm-Gg: AfdE7ck6MjvlK97ofPTGDjNeQ8Znsh38ngFt14Gy541t1Uo4P005vbH/GPrkDKuObWv NTyIRWRm2blB323TxpptJVNiv1jktpyh6ZsBC+PaPRwlWOzZnKdieOBN2zVR2O36MGQXZGkMzJr ry2XwwDGdUlaCa3ZzKpcwcfz1xI5BxsWNPd8ESVjwuRpeRRLt3hw8b4p2qnvarTnpVY72vFCuy0 ykz1rL3ssvRmkgImmO9+Iq7CvPn1yYjwAesHf6ILFMagsjnJrl42cmrQFahfY81W2v+JBe/X3mR NPEjJHDTSzKMMXZnXETGMBeq/Jh+uupRfawSRv3NwndwB6YOnNjIKIQph/XeUpe5czc+aSocvId mmtXxZmAuMhccuSOwQrCXuZQR8KQ= X-Received: by 2002:a05:622a:3c6:b0:51c:7b12:1211 with SMTP id d75a77b69052e-51cbf34e7d3mr216009831cf.79.1784205142104; Thu, 16 Jul 2026 05:32:22 -0700 (PDT) X-Received: by 2002:a05:622a:3c6:b0:51c:7b12:1211 with SMTP id d75a77b69052e-51cbf34e7d3mr215997071cf.79.1784205125413; Thu, 16 Jul 2026 05:32:05 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:76f:d108:485:5b34]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f464c7c96sm23766635f8f.33.2026.07.16.05.32.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 05:32:04 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 16 Jul 2026 14:31:39 +0200 Subject: [PATCH v8 4/5] 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: <20260716-swnode-remove-on-dev-unreg-v8-4-5c2b8cc38c28@oss.qualcomm.com> References: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@oss.qualcomm.com> In-Reply-To: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@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=1875; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=6y0x3dVDg6MbsMReImz9V4/sAZmwhZnLqrvpq5yaKmA=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqWM855KGpNaO9QL7bwoMnsMLTBpi+7XZHEziTV So+EpZSkbWJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaljPOQAKCRAFnS7L/zaE w2swD/4+XMquiqrTLlEE5V+DkOFKbQJCB6v3BWln231RiWMUELuGlSJRmxQilk6NjMIEn5Tfi+T 6M5dx4/ydhrlr7funY+g6Mezl9vYxe5vGVcd9Yk7xCQUufFcK/sWmNhX316m51czITDSwp/Paiw WowWE0ebhKwNwQyI5FvAXUn7k5atTt7TBqqhQnXZzlXW5AVW8tGEAsTvaHxaKRKeWCwW4r2Z4Qa HZ6eOlJJJkw9DCkrhZKH1vGK6thNPPJp+xKVOCmWL8kD6UEP1zlZrxr4qQXJMkZQ+fUvxDezaTG 4DyHdpUpOnntHks9d7tM6Tdm3dDc5J6nh4jzJ7Ww5CeKORy9gykBuR6vY7kegnMyqXdMyLic18T 59NoLcv+7VjkaaQ4kQTSojULBGu5XiGKwpf2tIbWTWfUd4BlSmR1lErbq1FcsbgmiCcC31mSWN0 wU6/shhVs6OHOr33p9XcPSu5e1C19taokpKDjoxftJcewYCA/7t9BEeF0eOwvEXgGWwSUMDIs07 YgMJyPe7z5uP5Ckdak9ydbrCvn3A6rwhDThcLp8MA3mezzW3IuH7boUILU+GylTrOZTVpgKdSDG g3RL2zMQyWvV2xQJ++dNNd6I4mhYzWYqfgLYJ5fV/Q0aBcT2TJ30ytxbx3rWMzrj0N95kQbcthb S5QmZDNmeMuwchA== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: NVgIm1hySq0CoGN2cEu6kjmWgsnHzW4E X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfXz+cP8QaFRYO8 dg+sTK0uohNhR4X6sCCtgUiyfWYdLEX+GtQNO5Emn2uwQ3hQb4yY5exUk2EaxRoiphwzJd91Cjk YsbMmIuVxZ6VilvQNiRnuSKmNUKl3ck= X-Proofpoint-GUID: NVgIm1hySq0CoGN2cEu6kjmWgsnHzW4E X-Authority-Analysis: v=2.4 cv=PN8/P/qC c=1 sm=1 tr=0 ts=6a58cf57 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=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=djyy7gggcHwf4V7r8BUA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX2AVU5WrLqfOD pCb36698yiBtVg8kGkaV2MvInV1PTODkFo2MyUj7c147y0CJM6VP/I6d77kCGorSwe5Z+pyxrkB lKq4rJsEOfKepmHw+tFZ2N2ziYQDficgXcy5han2EO75QJzeAU+ehPFcEvt9WN5BPqT3daPSABo q3OWOWJEGXor/3bB9teQwCxSZKYXDd1z0bC2N0QtTfK0JymSY3W5HkBockFn7lps0PnWnfRiEif fcjaXughTURa39hirEXCJ5sFDqYv3Jxaj/7XPqT5Qqe5xMgH4/wyFXbXc9DCBxDg1zi4qfO1WNG FF4UH2n20K20lhE8eDinAvEyETeljjOULjc8EYoKYLpNO8g/TkE+zOnb/yX6mDHWhbno3zyg57D aa4Mwe9LlYFyV9RoH3ZB/tfgo5rMxc1l4JaaTf7SJ0XUBQ5yPCsKLY+24i0aK4CDVBfyswfwGO3 zZT256mOhhDTr4IDxaQ== 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-16_04,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 adultscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160129 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 | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index fb57d487a6c2aba799b4ca5ccd089006cf2d8bf6..66f9ec73d47e90cecac9217ff6e= 0f051fea5b057 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -599,19 +599,19 @@ static void platform_device_release(struct device *de= v) struct platform_object *pa =3D container_of(dev, struct platform_object, pdev.dev); =20 - fwnode_handle_put(pa->pdev.dev.fwnode); + device_remove_software_node(dev); + /* + * If the primary firmware node is a software node, its reference count + * was already decreased by the call to device_remove_software_node(). + */ + if (!is_software_node(dev_fwnode(dev))) + fwnode_handle_put(pa->pdev.dev.fwnode); kfree(pa->pdev.dev.platform_data); kfree(pa->pdev.mfd_cell); kfree(pa->pdev.resource); 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 @@ -960,8 +960,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 15:52:00 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 43C9B41E6CA for ; Thu, 16 Jul 2026 12:32:10 +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=1784205136; cv=none; b=qg/qFVO2AbNu5v9jNukvAYGYLe1hppjfC4JMteM0nFja7j26EYR+y3M5BWSTvUURpBpUyLaeQv87XHj/lLZh3QxalEEQ3Y5ymi4MaSGEW6eR8w8yggZpA++C7wZBoViIlIZcekcQbedzL1dv7FeFZhzLiocpvMSW7Sdjtd01cPM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784205136; c=relaxed/simple; bh=oLwa7pZUr6doS0kE5wIzyXtRk9PkNeS7cvA7R3LQYdg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Abx8rQLl38bH5OrbPU1z5bd24EAYsIYVGdQY/6yxymtT6kuxn2Q3Z8QilVW/Rifwl4yBeL1y7l1NHjnf6inIxUK7vz3mGviBw6s9kMnsl9kqPEneyDOMAz7H4SoWvev7X9kWUeKG6ajhnLIc3sONdRv3sa4MY2fmmL3lWcNBxOk= 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=TNdTbLyI; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Jd0mz4TH; 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="TNdTbLyI"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Jd0mz4TH" 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 66GBjBqa2506801 for ; Thu, 16 Jul 2026 12:32:09 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=TNdTbLyIq3C8GHoH CMM24CYvyIJ0onFcZGEHOXDBs86sHKm9oQp6ToM+qOwxNYpR8sa2LidfgHfEGNUX 79c2zsCtt8YmREygJCHEQ+wqFoQe0SzBZQS0t+uUqVRqWj7aT+nsFAzxVo0GXDt+ aZiBzXhI1/E+0Cptt0hWRdwDDU0qMZ9owG2Q2mPbhjQdo+J+R6EpXN7jv/Op9lv9 bZpeAmLkdst/CPN9aGkm7GzdrmVMCDHKmdB+gLeh4ELFhCt8tzfL+YtdRGDHl5xZ 8bUWeZQfBCdToOmZiD9KfJMH/sS1KvHOdr4EO6DIVi8+C6+j5X/NPhqDcUiAHFEa WilE1Q== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4feehvbsdy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 16 Jul 2026 12:32:09 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8f0ed4fe79aso144823726d6.0 for ; Thu, 16 Jul 2026 05:32:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784205128; x=1784809928; 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=Jd0mz4THaG/Sxoq6yVebFP1Yz8YVsQzZI16OJJOVi+5LWxElmOzgoet+9dEPBtqBte r7bHvmA6GyCoTQtISZCtz0KhNDOYyAN5gkhvSxlJOUds50mpOOfiZhYr9kunj14hCtyB /CcgABxPU7Z87LkPGrN6tf+iB8g8qZZJn/gY18mMJFPc3JV5i919IjzuhZLxb+rwNrlZ TdLfoFBGXd5ejJ/RCqac2DPDTkRP4rnj+W8jRWvg1oWcOI1PZ6xGXau4s2Bg20cLsCK1 x1155NgdQXiwNOCukRkexRlGkhO1Jr9J8oJjK/AehYq9gu9moFArRXiRrMftklKmFakd p4/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784205128; x=1784809928; 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=mJv0ukA02MkNq/33/E6j5gyiXvxYcQU6/fPK9fnoxOLD8LqbPtLkyOzsLQcM9nWlR0 GtZLPSSb8rpBrA/iVlLwCPHI6UeCnv/iycMex6g2Ys2HagAv42LIDBfz048XuiQrfQCE GslTo0IXhiseEnfUHFIH33gr00VqOrv/t41uGT19Z1OlwJ8vEYHzxkIgbWzi9928HOFT nGK2CL3JIjACYwjTjlL2PMjybsJJtxwXzSGnvDTpf1dRxyVTLnP0GBjgy33Kszme2urA bwJmYfARpL2+IKWO0h66qK5YBO79u8NwYs5zC/oZDPo4nVgd+HEbsypx/pBnkRzSR6fG DScw== X-Forwarded-Encrypted: i=1; AHgh+RrxenQJrPetxk9oN4BR+SyQS+kNf28/t8JTm/iyHZkCaiFLhBa6T8iQjKs2DoP46Vjtnr2UjDmwRL6aI1A=@vger.kernel.org X-Gm-Message-State: AOJu0YwerrUaqLZR7kK/TZ7nYvCJa4Ge7l43duxTVuExKmnstvVrAdd5 7uBfM6reDY9UvkVSjm2h+UxdhvpWdz3r7RJlV9OPnPqfJUqpk9ih2wxYujo5Q/yLijhsfFUSD66 okTktcjr3dJSSw2V3O7JFNk2maN2EH0HlQwINQ2rWgA4qUH722dwBUjElXqAuEN8Tb4U= X-Gm-Gg: AfdE7ck1UvaSlgZymYnitnDXtbobCgb1jngLc3loGwxvjP+xyCtxTVWghhkwEaRYlLj 56O4GO9V6O75vhRKTnDAwzrhRZhCJIViTJdyaHgDbQbnVVXQG1q9xhoIZQzMA46yartoix+zeu8 KToLdToxvLFw0/8Qa1PXRnsdAblB9EvuSyCW4HFLc4OWjySzDx6k8YF+aeVdbNKrixAMXRaZ+ak qUAUsnp+3wY6MKbGPzL8DiLyS/l1u/hSXh3e2F0RaHYAo5ja6+eiJVM12nEGkmNKTgHa7kmRegl yoITik1yEX5oDj95RwaI344DzS2XQXoJejZmqIaROjEgjtbjGb+cxu3jUoy7MxQSlo80fqugaWK lsNG9FXydtKuxmgfG2gtu/YjkHVc= X-Received: by 2002:a05:622a:a15:b0:51c:7b11:419d with SMTP id d75a77b69052e-51e4f12d97cmr73023141cf.74.1784205128379; Thu, 16 Jul 2026 05:32:08 -0700 (PDT) X-Received: by 2002:a05:622a:a15:b0:51c:7b11:419d with SMTP id d75a77b69052e-51e4f12d97cmr73022841cf.74.1784205127901; Thu, 16 Jul 2026 05:32:07 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:76f:d108:485:5b34]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f464c7c96sm23766635f8f.33.2026.07.16.05.32.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 05:32:06 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 16 Jul 2026 14:31:40 +0200 Subject: [PATCH v8 5/5] 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: <20260716-swnode-remove-on-dev-unreg-v8-5-5c2b8cc38c28@oss.qualcomm.com> References: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@oss.qualcomm.com> In-Reply-To: <20260716-swnode-remove-on-dev-unreg-v8-0-5c2b8cc38c28@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/NoTDAcsmYgBqWM86rjx7q8yriQSpjvNMvC+uK23KVDXnrN70X cPCoyYSQM6JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCaljPOgAKCRAFnS7L/zaE w+FlD/oCqR5yg8/HruSl6XV9Qef9k8PuUl3pCHhLlXI07rbwdFQ4r4DuXSoLJD9zG7k3+gK6fXH I5bgglPrpf0qPsrPVAB66suKg1ixVCgnIY/eXMCDP7sLqbgYmwHfg6ODp0mSvq63BKb0LllZmUD tVflkqY1g6iE4zfyeGRmDgxVlzR2q700GyVziNMgQ77nbpdOfhLxzBEsK2SBEUgavZKW4WWMK1z nXUODe7S2WhvCsBOXoPPAsMQ5665zHGAlR5Cdu7OMNh4Jv/tEbxzXbXtK5JCDdeFA6F3SF8zL8c I0IFzaNs0Pr9yGiFr5y1cWsWUdskLIYbxBVYeWifMFmIQIBBmQSMiHurxjJbbY5l3uk1HYqrk8n XVr05SZI/QAwwRBN/SUKKDyD5Px0ZE2py4Qjwpg6u5zKCyRw31a9diFe02yNqfxz8TpCjTtYEQN HHAcSA1uN2exfHsAD1lRh3/o5LBOgKVfKLkjM/A9CPkLY9KbhF9C7pXip/0Y0OwDhiDvTo9C0qe 4hzinbfM8/xAuJCzv6yBN9rAYDzpa+a4IbPtSpu8w/dlmHpmf4GSVJNox5uWrvx6yLbITA7JGJU +or7SktwGZcaBXv3oMa/Soao8cZ0SRM0Ha589ZYyHXqqn+Vpb5ngifohdPZFxu4iXmSYwBOXrY0 yBTebxLn8QuNCyg== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Authority-Analysis: v=2.4 cv=ZpDd7d7G c=1 sm=1 tr=0 ts=6a58cf49 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=zydxXWD-JFuk5BhJ14wA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX2vzr0e+l+wqH yjDVOQjK7yk8YHemccJNwxu1cyVAt3tYt7Tt+xYfZLJETwnH1dEdUYordsQV+PezLaiwAelXzfn 77tjx4k4OgGEHqv61eEN1KmULLj5I5zWAuq6HFG1Dh98+TisJhjOx+UmFFLbTfH8+nTWaG6jjVf +DxZxDPxP51MtV9h4AklwGWW+U9cRJP/GRlfJBYgEUCFAgw7gY3rL3jiIKXjudtZDa3l9xiiaq/ OiX0jJ5KCRL54G0PBOzVXCy6Tq4LepRcAT2T/1iafTIABKoVWVfnY0WFrX+/sFfw1+cWZw6RJhO ZvlpU0GohRZstV/9dnn4ZpZFCCcBQ7CMtuU9XudNh50PG8ABOcOU3RJfhlgHVFb9aF6TVuPwtG0 4U4/WZwSZmxtJorKQ6gLQeX/I/M+Ds8333q0goKjx5MrXZIFQxacqfpPP7gohos6H/cUo1Oz8uv 1435sN3uPylAliKcU3g== X-Proofpoint-GUID: bz-Ba34hz14D0NmsW96ZDjcqYzI1hjND X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE2MDEyOSBTYWx0ZWRfX4yU5vQfzq7F+ HFuMOu5o5S7BQh6VNwmXNrqxR75UutQ5ldYoF1AcwSzKz5kLMD0aFTUH8geB6DwkarsTJ8NsJZy ePKbpyvP/ecusNOf7xH/OsRtaXFy8+8= X-Proofpoint-ORIG-GUID: bz-Ba34hz14D0NmsW96ZDjcqYzI1hjND 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-16_04,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 adultscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607160129 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