From nobody Fri Jun 12 17:26:17 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 F28F73043D5 for ; Wed, 13 May 2026 15:05:22 +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=1778684724; cv=none; b=Qn94SyJIZAKfBu2SBL/Pf0DsmUqH3CvMw6uLPye2WS78NYR10lvO+1bpEyB1RNjO2sk89gamrJ0AqvwxITML2oj2kc6kZvWyiUmrrswyQGNuxxNAzWZv49sjUo5zMJx9obUN49YkA+tRqJv3kPqxworKb2sWSjB7E21eZQDI17c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778684724; c=relaxed/simple; bh=7CT4RdGd8vHFfi08UzdJ0gY35hkIPSgc6GixhOhNOoI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TtSxSb/EgnfQGE8cES/xYnF6O9A4yh9ZFiUtAcWhg8dCu0I2DlRRbMTjPVa2wBh4jhO3TD3dFnXjJqToITFdq4jxqi9SjmGo5ozMWlv3/cGx8JChrxCeE4t5/AvNbbhXPRG9i8NNfmwMPkNj9dQg7yqN2JHTMjDQbAWDKQ3mZV0= 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=DOwwEpAU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fcg8EzNl; 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="DOwwEpAU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fcg8EzNl" 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 64DEvs5K4082628 for ; Wed, 13 May 2026 15:05:22 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= aSJkUW3sdSq9NIEJuMhwmsrLO5ZZJ71MntJqYUHfhdY=; b=DOwwEpAURofCdVa7 yv9NCVkgVXf6qOSXWpoJOH/2S03kgX4XgnyWYb2qvUSF4JjAHww/oADGgpxMaxBu YKzJdMhp4NOo+2iFX0sVOdAHZk50u08fBqWNesmNVX7wSvo3V4Ni7yFnlwt1uruH w25Eec0tpCjffLBEZIfRbNW6gCBEux5x+txW/k0l50OCBeP5GhQ6D/ul2S2PWAHx i0Zd1o/t+gGXPnd3DqMMvZ2QbC/ZIEOgajsrH31T4GgkLxatRBnqrGxuHGzV6dpb cLlph7q0pKUsGwMEae+ChC850z142pZv42PdEOW2TWEiJ7W0wsAvWYcVs3hZAoyN bhrGew== Received: from mail-oi1-f198.google.com (mail-oi1-f198.google.com [209.85.167.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e4p6e1ed6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 13 May 2026 15:05:22 +0000 (GMT) Received: by mail-oi1-f198.google.com with SMTP id 5614622812f47-475f6d0de69so12849108b6e.1 for ; Wed, 13 May 2026 08:05:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778684721; x=1779289521; 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=aSJkUW3sdSq9NIEJuMhwmsrLO5ZZJ71MntJqYUHfhdY=; b=fcg8EzNloiT3KadZYpzeUHvH6MvPVX5Toz93MShCo9lYPjQVW3R7tj7+RztJYaRy8B zHnMj48jsH8gKOnkIMaiFM51hK9UslMBusqaUdwXbX4vvp92+jYBgNlxv8yAFv03yTGZ F4R/7rbVXYm1XSagrvydHNfHFojN4ya1CUzMKtx/lPkci2a4WJEsE3dqwcm/Ecq5AH2F z6uvi7tOlqiKOjR6CFhHwNIPli2S+lCKZcxztViVXmyuSGbsvHfllYDxz6JIWTyOEjzK /Obe2LTtyxGHEdAShzDu1XlbTnA2QLifemG+8QG6A6+3vWZQIoDLpP6JQvtyb1CvrV3D nSpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778684721; x=1779289521; 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=aSJkUW3sdSq9NIEJuMhwmsrLO5ZZJ71MntJqYUHfhdY=; b=KvUqyx36IyXW/lYWOFOqRDcOg7iVnNpFuvFSnEiERWikdkF2pyKVkDZWzXgwRSV7s4 5f1aq2gQThIWhQPeXT4P4P26zopr/H3IlNsuCNbF5Y9zRneJnZAjDDpacMaR8IrqiO3C tFr87bZ2yDfd26KYvOBZHc1AwZAFKgiJg0uw4+UCm0gwgP52A3jOGQXFJRFCGwqdDbTz /rd3rfC4BHJ/epTOxC13FpP7iv+oCmmb6b4Prlf707wW6WP7hkqoGZp5Cj//B7cFuBPR 9eGPmq+RbqV//zPtgMK3IC/PdsAWF+fKgy/SqOJ+J6wERGdl+ix1GbtfneudHLqXRcPb V5Aw== X-Forwarded-Encrypted: i=1; AFNElJ9CMKItAIdYTYrBu4MoRjtbcpxCuwl3+6lQQnzzJlVfTO1uW5QIeMez2+t/oktwb715rJBJ6iuL9CTdbLw=@vger.kernel.org X-Gm-Message-State: AOJu0YxRvR/iPqgNeskQneixRMdEHwVZgif2xaWcM0hT9zxhmhr5NaQQ Km2xhktgu2XK8xcHaRSqV9/jfeuTI3ZIM2g09OqzmqO84iSgdkNQ3gvJ/TPrIRgKHt5i7uJn+LV rRhMgAerzoOlrXCtNHUmgeeDZRF22Sfp2sQY9TKyphVvOHTzmp9EloWMeynJEdHdOH1o= X-Gm-Gg: Acq92OHtTygySwZodtKDM2F6/7Ii5Y5q7tF1VPz0jYPKtpZA9z4Yp8NM0QavQQJAvQM erk0qcDKdHrB4KW3cLkYA1MwtoK8xfmIge7Z8nNNeZM3o+exg+Pbd8olZU/SBtB/mKGIKTumN74 ENdIVxvdfI8UfV0S69sVnjPlBAv0s+NJo/64SRKBCfPLWup3odE5ovEUJlIvUAMoUqJGpnnx2O8 RkNK4ebdngO3a+1EbaF1y6txs0PEd8kfPLL3faSK4tK+3iDRWeLlnT8G+iEEm3G3JN9v7GAZnmO YDdD9NjezMQknGtu19IKHc1EWqYpOB3HONnBY8ATYKxtmXEW7r8ePrTmP4Gfyg8jq7+YrHmZrwk ir5Gq2qzJIwfg43LcNsKWguCnf2srWwOVOmY5UA0xxI2ZH08AAw== X-Received: by 2002:a05:6820:c88:b0:694:8646:9927 with SMTP id 006d021491bc7-69b78e151e3mr2067602eaf.35.1778684721180; Wed, 13 May 2026 08:05:21 -0700 (PDT) X-Received: by 2002:a05:6820:c88:b0:694:8646:9927 with SMTP id 006d021491bc7-69b78e151e3mr2067515eaf.35.1778684720539; Wed, 13 May 2026 08:05:20 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:63ec:4acc:c4f6:423]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e8f542e56sm43216455e9.34.2026.05.13.08.05.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 08:05:19 -0700 (PDT) From: Bartosz Golaszewski Date: Wed, 13 May 2026 17:04:48 +0200 Subject: [PATCH v6 1/6] 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: <20260513-swnode-remove-on-dev-unreg-v6-1-f9c58939df27@oss.qualcomm.com> References: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@oss.qualcomm.com> In-Reply-To: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@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=2612; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=7CT4RdGd8vHFfi08UzdJ0gY35hkIPSgc6GixhOhNOoI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqBJMkJrAnP++rExRYyFuP5VzjyttTtBK61XiAG qYsTM0aNsqJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagSTJAAKCRAFnS7L/zaE w0NWD/9o1//pvqg5ealCNkdfHJIPPJ6KIzTFVfZcoQZkGuENeQrqew8b+WPMREwuJ4xBgI4CLLQ oj0RVbrq1WJWkko8JaB0R9SQozi89OM70fo0x8TTnnvW44nRU0fo8p5spqLpj9hDG2hSBCN8i5X Y4CE3pwLZU7M8YSi4jN4YLlqYwV3UtIUHZjqvbL1Vd3pnYuq0N1rsA8U4WI4VhJL2/kakNQtDv7 EJfPiV27idjSLXytXpEhlnxqvPNWD2s4Gae4H434lcYMMbTsBFKx5I7uo6yojfzlZPtdchSmzxQ DqM3xOEFN6iKDe6LHPgrvZKMyoowXe01Vvn/T3VwM1oL9c8+rJ1NwEUOylUBhHBahbEy9a0SuL2 IF7MaqQwWja7QmqnLtwJvspsHg4AeSeA5Fq+baGppBDhsQUHOJUrtQSHAuEoRGgAKV2/Bdq2aKr Woej7bGcJ7aY2AkjYr3Eb/FsquzqyNqzeAooPsCyRi7Cs9Llg6DiQ8O0Os1OWTG+DrykGJSuo8s K79MWwTkOo9pYyCnsEPWhso0obnhHYPNQFPydT/EzrNTy/EFB8Vio3gy9kekzTIAdArk2tIC4KY IYdOHa8BaXqWHKL0uFRYc4Y9nQtF2r6rFoFIAY54ShSFFMmdZIEeHZFei9BPrc5XWYuwtxTiJ9u rYGfdQvm02e+g2g== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: dUeEKx18A6eBTUaVg4Y-X9FKOhMwN02X X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEzMDE1NCBTYWx0ZWRfX5biuLuPi5OFz VeNyMsM5AFMbjpcia5LT/2C4FoVCnuGhsor3GWRnD6aifd2LIPvNZPKXL2pZdme6HXGUmXSCzLH Wk0eTPfw4hjAt31thOfi4onF1AUr5Nt/3kQdFSlwWvpsOyhNt3YNfX2dmxD+35mokLjQLf4IpVd EOSieEh3CMMH0b7i1xS80j4r7mr//P7r81KDDPPeId/leZ7MHQP7RoD3B70k8LHuq7cuFh1f8qI e7XdK2DJGYDCyxWiskUOdwJi57crIlGfmX6FJGpvpLiCS+h/SBD1ss55YVwq/NJLHnwZpSEnZVr GsUsV0hW/prFIbOq2QoR61j1+s0U1QPaYK4k8WnoPVMGAhdMTNMbPt3v2SOJt6/oHHdleLkUVPn vhLaWPsp6sVNv3VeUef5XE8pYWa4GytnKcwqQ0GaGtfF8Q/AzX1EUBzRvYaOd4r1B4vUuvMOxg9 XzmbK0eGwDe2senTvmw== X-Proofpoint-GUID: dUeEKx18A6eBTUaVg4Y-X9FKOhMwN02X X-Authority-Analysis: v=2.4 cv=Wukb99fv c=1 sm=1 tr=0 ts=6a049332 cx=c_pps a=4ztaESFFfuz8Af0l9swBwA==: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=C8YuS1gbLiBEeSI6bHIA:9 a=QEXdDO2ut3YA:10 a=TPnrazJqx2CeVZ-ItzZ-: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-13_01,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 spamscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 suspectscore=0 impostorscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605130154 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 fail with -EBUSY. Provide a wrapper around the existing platform_device_release() that additonally calls device_remove_software_node() and use it to replace the former if we end up adding a software node. While at it: 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. Fixes: 0fc434bc2c45 ("driver core: platform: allow attaching software nodes= when creating devices") Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 75b4698d0e582e67adafa78c312d75c72fd654cf..a19dd22deef2f3edf7cddcf824d= 02b4e09091852 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -606,6 +606,12 @@ static void platform_device_release(struct device *dev) kfree(pa); } =20 +static void platform_device_release_full(struct device *dev) +{ + device_remove_software_node(dev); + platform_device_release(dev); +} + /** * platform_device_alloc - create a platform device * @name: base name of the device we're adding @@ -848,7 +854,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); @@ -878,6 +890,8 @@ 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 Fri Jun 12 17:26:17 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 4702A47CC80 for ; Wed, 13 May 2026 15:05:26 +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=1778684727; cv=none; b=KHHSKD4+kcE7Jgz0oeJ5Cspfo30hfGXtt0e/WdEz3Pqnel+AC3zq/JYIn5N+DMfTft49PRR2YKLUReMLzpToBfy/I/Tme5iD25youULNtEHvgd8xIqCIQjrz1DT2lQzg7nNraDYYEjla7Rf9BqbOujoLhPA+GDu99keh6b71X7Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778684727; c=relaxed/simple; bh=8YXXx+c7Bfn1zIL1XiDsFM7WtZrjadc3NSaS7UHHFkI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gwWnknwr4sbEMWNhHRMMNnWTLixcDgsVsD/9w6o71jy2faVIHYwQHMNfJ/Ced6sOC0748/oyclqlffmQulSXivqWfetCH95AMvxR1o91LxrFXwqXD66Vfk4FY+l8MSsp/iinl/mT2+euHka8o1UUdXU1cHuFA6Pby793/8p0U30= 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=fIwAsONb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=aC55sPH0; 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="fIwAsONb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="aC55sPH0" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64DB6EYn978386 for ; Wed, 13 May 2026 15:05:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= cgh4QSLn17J1vANVwWglRn08I0SloVcQwiRt7QECtys=; b=fIwAsONbzLCkXtYa KNPlSOOqNAe4a7eV25WrOsZNkAMwnBRCwGJW0f72LtbvhF701i2hs//5C9ug1O52 Cezkr9qa1gLF137cR+2GT7wARtjoEftddoBKFyMBYIFeATgpJUvNy2Hv7DveHgtC 5VkysksqreuXTQLbqoR4KSyQArbPBWpLS+JECRBUTsC7pIldtjM/ewvqCCsAUwQP pXxa4w44Y0oHU5hy4nKkZ5D4HK+jRLQk2KCX/sH9T2vZWjx+l3BDNjgfzfz5vXVv STlF2fXaEB8yWu0oKF6/h6sYrydwrSNTuC2g1kBlqIre/cr5mguxaLVBHB/s2HPg rUtFtg== Received: from mail-ot1-f71.google.com (mail-ot1-f71.google.com [209.85.210.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e46s9vuqk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 13 May 2026 15:05:24 +0000 (GMT) Received: by mail-ot1-f71.google.com with SMTP id 46e09a7af769-7de4be150b9so13366184a34.1 for ; Wed, 13 May 2026 08:05:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778684723; x=1779289523; 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=aC55sPH0VpajxsPDzshyksuvDwQCOCE2dEo42aBqbOD3GnCLKDNP4kfdKdZufDTDX6 iSm2mwzAfLRjHq4mhbIfY7ejFEp6iVd4fnLAh/dkQdmZQDiEH4vS60s4tVFTCHGkLuwz CWq1OXslqBeKLbtisi5MvILeGQRe7t4oNYjCoabPn9MOn25nyNyr2dMxONPL/JT5jS9q 5dhRPPSdZnlvFSHjNyl0gHMKbN99Kzn547V5uXQs4/Ie2zyDetDc7TtRyAe/zraBcaTp gytyasddVUg+H5Jz0LU00dVL+uVFCNZos/omqcNLh5vVGw6joUcPs6fDvHdayOILy8pn UX5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778684723; x=1779289523; 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=gZrhjrKUww9Ket1HGcpvPZwR8JNhDpHM5Cx/lfIVFEEU6tO4ff3QWvwK2Xvi3FHb6Y HqyBDx1fro0HK+iVJiJUOPOyA8sDlo8xGWcf+ac9TDbtdNMML7VjcxfxCik8IP25yxyh LqPA+LOIjdvMe0SlqAJNwEhY38Y5QCskjxovAEcwmef52/9lmfoZ4LDFGEm18hJXeFgv r4w0jHSQUnXoPUniyZf4ZZmNFMDz+aQhm6YMegvViu7Ce1IKqzZZbYrvaMZcA4mSIYW5 ofX86sfx1Tiw7IeoZ8cCU9QulAGAUj3uCXnBxEZY96LNWnbcvDZwf18F8vzWBXvkqNmw mxjA== X-Forwarded-Encrypted: i=1; AFNElJ/BN4edhreJqjEjn6aFVtTHH8friBzbcd3fleMwTev5gmm3cyf2IGT3hF3wXKgUxbr5B3BNjZejn8DyiNk=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4VOf4A54LMflMV+38khQHm0bo0vSOnCGdQra+41wTVOZ1ljZh 6QWQ3WEf5VmBhkTMUZRHxelHugIOxTIrIXOeks1QDee3QE76ijsW2Mnh6xT31SKGN6NHgNmwaCu GCTThzO6YkuwhVu8/n0LQyP1ueSuFPTbhsrDvQi50ySXMJgsgJxVeAUHf+nOo3nWMP2U= X-Gm-Gg: Acq92OEWz35ID5/fJirvHqZHtsWgtlYpjccM2JiXkmAWBLwowwIxoVR78Lqf2AtED4Y J67D0GcTlIKEqVtT6TVmeE+F9HnzAOdZYeCmDzU5SIZ+udguLuOiF/LbEMo93gIA1JRdrA3zoVL eSB4T9eJp4ZemKM1KyJ0jfgVWf8rQ3NDI1g4TFJhZ0tA2qTJnqgkaPZ6GjSoM+dZlgNkHSt6GlC Gxwtp9f3UjxYb2CsRWeAVd3H/0n8/pNAP+fkGvUO1OEcXk5z6yko+HJR0k/hoZFSCjqhn/ZS40Q wLWqAN+aYhc5pcTA22NfnBN1kbBdhvEAU4S4Q4v7/HD096yHttA2z7GTbtEj7y8Hjl1BEWK+xOX tO6MoAAL80DbVICqxawijvFaORe10eF0sghUEVgmta8fusYfH2w== X-Received: by 2002:a05:6820:188d:b0:69b:544f:b2e1 with SMTP id 006d021491bc7-69b78d497f2mr2330091eaf.2.1778684723514; Wed, 13 May 2026 08:05:23 -0700 (PDT) X-Received: by 2002:a05:6820:188d:b0:69b:544f:b2e1 with SMTP id 006d021491bc7-69b78d497f2mr2330022eaf.2.1778684722980; Wed, 13 May 2026 08:05:22 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:63ec:4acc:c4f6:423]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e8f542e56sm43216455e9.34.2026.05.13.08.05.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 08:05:22 -0700 (PDT) From: Bartosz Golaszewski Date: Wed, 13 May 2026 17:04:49 +0200 Subject: [PATCH v6 2/6] 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: <20260513-swnode-remove-on-dev-unreg-v6-2-f9c58939df27@oss.qualcomm.com> References: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@oss.qualcomm.com> In-Reply-To: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@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/NoTDAcsmYgBqBJMl2Rv+Zsya8pgVoXljSmeDSjKOIFoePae2P wqY8CfPQXSJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagSTJQAKCRAFnS7L/zaE w3CuD/98ugd/Cm4ouSqqIrpnFdGzXCZq235gFk9owOU/zFx+CoQTW5DwiQs2+zWJPfopBalIUME xllUWojs8pk6AXWy0bLhJ8zpleeq5qpzciSpxHU4Ox66qfOsbYs1Nf9DEbUTMsmre2IWFMuKCit lbARISHLXyEqKBji0cGiUsppbj8U6v9R2zWub4w6fJmFh4T0oJhIw9AgxBK6RRG24AWBHPBiXvf CTPZ25F2LLehNMX0T+Ju3IJfP+ohgaSYt/bze8gFxBb4O+dRQsKZsTOiBtR7rFzF7TQZJlevuVB W0FWbgZ2uFIdHSw2/nyYT+T3EowHBJ1Xcf4tVhvidSBFrhio06ERNni6e34XyhP3V3hNX2Y3ylh JILB7jqFDOd8r0gKUkx1bC/+xt4pTD80KpXdbXMF028sk4C2ItXFTZxeqPHqYoI8fo6mKY89z0d X9pFFWf+lAk8EfToQUr8hMYfxnHeqyTmL4UhzKGdq2scsEwAHIFXS9UsFouJiA26z6pTcU/R39Y 5ofXM3GpgBV1jjMwVRSKLhsMqpEMSbkebl8kzR2Y5ttzc9swYZhOwSrrM7CK2excO5pyytVVN70 5Samp3Z3aZATl7T1tj6zWcXGCPgxxIc4MZvaf5nmXS9neEb/fGL/byvOi4PRUI/SLF8ZcNCeth+ ap34w4jYSGt1xsQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEzMDE1NCBTYWx0ZWRfX6Et5EbmQYBUq DvtrBPhbJQYqikWy4H0/bBmjDsqRnPv7SZe1nYvB+AGOlVNK++0WwWgtD/5TPHmY5OFp/9igz3f QR6ExZhH0T4dxnhFxAJpWFN1Kf4yPybKVRWvK3Gv798Qo8RnyYE4MPyp/q8wzelpdzRki7aQi2O iCrG8XXgMVKm/mYCHg3XjlOATC3dy9XSUiUqDGjA158YR2RrowfPvI4Y5YSBManz1GmNycxIKTF 98FH9XqWjcpaNOc4F466+iJdSztehAeyH3xOFbqcRrX+wzcmm4mVEUrBIAjb3nsEeXez3BOgCj6 kjlEoY58HXv4ebHoMKVoKLLfHzXfj2SzeJva7k7+kBYVKCJab8hE/C7bzxguzPx/6RlyF5EUz99 aWORZ8O2cXGGxPRFyph3Brgv62IiGA== X-Proofpoint-ORIG-GUID: MHcv5TioB9bBPuIe1dDz3YyENYXlpz9b X-Proofpoint-GUID: MHcv5TioB9bBPuIe1dDz3YyENYXlpz9b X-Authority-Analysis: v=2.4 cv=L68theT8 c=1 sm=1 tr=0 ts=6a049334 cx=c_pps a=OI0sxtj7PyCX9F1bxD/puw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=vKDqCkOE6BQjc6v61vgA:9 a=QEXdDO2ut3YA:10 a=Z1Yy7GAxqfX1iEi80vsk: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-13_01,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 adultscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605130154 Creating a software node for a given set of properties and adding it to a platform device can be achieved with a single call to platform_device_register_full(). There's nothing in this driver that suggests using the more fine-grained interfaces was intentional so switch to using the high-level helper. Signed-off-by: Bartosz Golaszewski Acked-by: Ilpo J=C3=A4rvinen --- drivers/platform/surface/surface_gpe.c | 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 17:26:17 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 9248247AF42 for ; Wed, 13 May 2026 15:05:27 +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=1778684729; cv=none; b=hzwfqbUB5BCVEobrridzi6A1ael0RhJOyLkQzBirbZ8ZGemaASPm5Doisv03l0ZFLfUX1I8xXmSiNEH37jqpZ4Lb7RT+SUEEDzyOJ11muRKIk3kU9cCnUWw+ZrSKFRDLsP7ydnisLswGXw4iwr48isP0KfpYA26YhaJKbthvoJU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778684729; c=relaxed/simple; bh=r5CorKpog6XK7Xw7AuHmiWjyB7Vw/HEf5JCJbVrapGo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FXSl94k5HpcXHKug5SGacaMFYV5AY609LK0x2qacHlXipLm/vpY0KIxDmW2RtStTXOb3wmBRC77r/OPvekXVqPOq7Rx7SKEOrgdOOwzhDvIUWg5dqXkic/THJWVtGPSrAbQSD7hlY6iOmU3Ch97QL4F+tJ4kB+dvyZwBmL2fGvI= 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=jjREzhdY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=i0TOtDXx; 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="jjREzhdY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="i0TOtDXx" 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 64DCROZk2965200 for ; Wed, 13 May 2026 15:05:27 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= zZ7Vcm/EN9v/uD2FdliZJtDXsSCe0ecblDQ1EGsR2pc=; b=jjREzhdYcb6VMRDW G+ocrXt1WcQle1bA+brk7Wxm8ClbOhn7+U3wGMUH+OVNAWgEK0s9k7/u23yLWp/T RVym+iK3PAoAVY78FwDOnqD7wWCFFGjHeUPdjAV31HymQdLGvgV91zbeR3NQfuvR gvTe7EdwlaQ64Wsg+NTGYeCRfVD2x9TbMXeP6z3neJDaPulHTS03/P6Z/VUKCMxy R6Ax7yoRrxQMEZAHP3L4dMRoZG+NtCir+YYAxH/VyC1TqNePT8M01ohXuN7ZUzu+ hxjjVC4doAGWcN//vEKlSY0Hi8A9QpX+j6bK3ON3+5/WdTFC/J/+iIzKg91Se2vR 9eaM9g== Received: from mail-oa1-f71.google.com (mail-oa1-f71.google.com [209.85.160.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e4ma59yhc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 13 May 2026 15:05:26 +0000 (GMT) Received: by mail-oa1-f71.google.com with SMTP id 586e51a60fabf-43013bffd49so16792611fac.0 for ; Wed, 13 May 2026 08:05:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778684726; x=1779289526; 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=zZ7Vcm/EN9v/uD2FdliZJtDXsSCe0ecblDQ1EGsR2pc=; b=i0TOtDXxUTDVq8GPpbd1Ge4eqaYgt/Uy7XU5klfuoxOoz0BNWfkmJ6BIrT7/ULHVBm oQFzYpOTDY4QwE6jHL5w7UvvuURc9DDoMnGc7WgQvU6qM6QbftdObGbQHCl2BmzuEmTQ fW1iJZrEqf/VLil5yqs9/8LU3vu9TRdJaH+IHJ5P64TLSbyWpa+icimeRU1QFYwVw6rY pEF5hswsIXDzCgtXpR04ARE8wEDwQ5bx/GC7t3CZPuyuB78Qdkxjx5sN4RsD7Stgm0Z9 xQVFlDZtt1bsrNne7taR/va8vTvXNrbLbOPb8A4lDWvZdkDOTb/pW8KVxREPmnP8jZ7C 7Q2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778684726; x=1779289526; 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=zZ7Vcm/EN9v/uD2FdliZJtDXsSCe0ecblDQ1EGsR2pc=; b=lkKeUvjO7SNlNwsBiiH9y5vHMY1HeDnOrW+IXygilFw1UwYINkY9xb1qrGGCY8zOmM JoldHji5kO3wVEePmVc9Djz5VPTAQRailAWRX00DVOAXHzXkCLXPbNqNTlFBGHMFREIJ rFTTeGmpI7cTRpw9vxL9vy8bikoJgLAVFVE9GJm2m25d0UkPRHVKvs+bBrgUQofbrd2u wg1NTNwYGepsb6qstR/7S5i3uLUXQ1QcB39kt9mfFoegIf3vkRe4T1fNqvTEp15pdZCV WQkd4xFnFMOlDnPHLPyzWNYvFuyckOyi3iUQwTRBrKb6Masrk1FxY5ROrjYU9OqdgSHt NUFw== X-Forwarded-Encrypted: i=1; AFNElJ9UilHv/OxbgoXZ50jlvDD3dEjdykZqt1cDTWgGsvfG98g8LjbPmMw3H2FBfcw0LOJIHoxSsXPErS/26/g=@vger.kernel.org X-Gm-Message-State: AOJu0YwbvIRVDjoE/NVbcqrofpLwwZ6ORissq+6JpNE8nBVcWUsUvvbc vi8HBnQV1z448NMo43BBV8gwOusyJeTnygbrSj2daOKcSYEjl6MTjP6/9RxLrY8yii0qybiJDNO yb6a423dw7whsACcUcvs9vnCtfUHO/66k5SHv5EUse6tmsVT3EUhrDgjW/9WCFIXCwqI= X-Gm-Gg: Acq92OGEMby6+n45aHxIt8O/QH2NsKpcTZAVhsPu4f1tdnFxdEC3NbtIoH1as0uX2BY 50BU+bYvRolGzaIIbv0R0J5PrAT4FzPmjuXBg7qbYrI6J6ToOl1Xpa6v5C/9mVVqiiWj7W6/JZ5 PlB2N8KuJQSiOdwb1kq1+5bMlLAmqB/lKs/I3lgMH71p8lqOJ3vdZpdrvaiQk2MFniCWMmOiQRs vmeySAcpqwS4BogdE4aRhUPljrObv2Q0p/cDt2ggUPzig8SUDaDVAZ2gNpTlGSzfLCNRVDj/fyI UYv3LcJz+6S3aMTach5sDuhKRrbgkvTNyXITboKK6BNMScDRlWkU8FHtj37FVWYMZ+gOUxKURM1 6MbkSuGU7CfwlC745He+1U9tkdAj2Cpg44B/CpvUEgOkTYXwA0w== X-Received: by 2002:a4a:e649:0:b0:694:96ea:dc7c with SMTP id 006d021491bc7-69b6788d9fbmr3446747eaf.38.1778684726003; Wed, 13 May 2026 08:05:26 -0700 (PDT) X-Received: by 2002:a4a:e649:0:b0:694:96ea:dc7c with SMTP id 006d021491bc7-69b6788d9fbmr3446719eaf.38.1778684725508; Wed, 13 May 2026 08:05:25 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:63ec:4acc:c4f6:423]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e8f542e56sm43216455e9.34.2026.05.13.08.05.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 08:05:24 -0700 (PDT) From: Bartosz Golaszewski Date: Wed, 13 May 2026 17:04:50 +0200 Subject: [PATCH v6 3/6] 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: <20260513-swnode-remove-on-dev-unreg-v6-3-f9c58939df27@oss.qualcomm.com> References: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@oss.qualcomm.com> In-Reply-To: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@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=3054; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=r5CorKpog6XK7Xw7AuHmiWjyB7Vw/HEf5JCJbVrapGo=; b=owEBbAKT/ZANAwAKAQWdLsv/NoTDAcsmYgBqBJMmq9JW0v7kRFlCKa3cQX1e7fyvU+j31gEFo GPWtnshMziJAjIEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagSTJgAKCRAFnS7L/zaE w0kcD/j2A0ewkNS2bCevVPmTc7c9OKJ+dLjh+eBcqW93BRugn0nF19BZeEPkdpJ4d8JfXxJOl2R 0yRABxbWvBbxIAvu5Ciq0Q/lk32XMa6eIgh9i+LRRwbdDc7j4i3L8TQVUz1e/OtOJI3UuAEx8Hf 5IW8XAZDv2Unf9peA+4En+gRC9RdwpQ1GRG49SGchp6jLdr64eWzMpf1kz8WQQbuTfZGPcq2ZRT 9WmLXhdT8d7rwlOPBCkaQADhzAcNNOJDAdv+PPXi6P7nH0NObPzaYPBiSbKG/c1fo3OZT6hTDUI f2TMra/TKercmXMDbU96CPWQJunrpCUNvQsvD0y9yWpDo3F5S4yE2vjeYQBd3EdBOCcHtEHjX40 TVsIMjUcQbKJAQdGI0Q8UP5BQoCYOGn1rUFBqRQROZ2D4UOyLzAiPQHqN6sKbAvHrT8xSxUOrRi IvDG2wJbh0FzEW4RtFzrEqwBiOotHHKQ03U8da25RuETsDGT/vEMmw1/Ua4JuNVPtC7DIsJvVWB zCtYAHUcHDnJ3CP7KR/wIJFcozrxpsLv8fX745KgB25rR8Zlg5i19BqJhRlEOLoIJg6pbkzXepT WLDnxY0wJWesAgedGNBSuY2MBYkfToT7EPADVSY9o30rdCXsBTr4c5QeYu4cGDyVAbq92CJVCDU 9ZFoM9pKhvtc4 X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEzMDE1NCBTYWx0ZWRfXzB/XicP7vHbb +t46JM8HJ/1FpUPIO3euipbR0DWQDwr2MnCJZisjTr9Y9XVNxlTTdFmJrrnF1yaMEUUV3Lox8Sa QyPRzmmiQzh5AuTk6mbNHg2AUIaez2znLbBw8cIeaM7dAiWZz5TFi+y9WTFi8WxwQ0ehZ2d07za vLVcqPG5cn1KeXWMYwH0khfoKy6/jDTZ46qw6Pyolmz0HHtgAPJIC03jRjM/2kuZgCugiqX+Ir6 /IOoALdYL/ldT+BtE5Cr8gID4eKsHVNSSMQAdT7GgSfWotxRcZ75j3dkJbImZpJdxck5g0lpYvr OPhGdXi8ii4S8iw6PlKrNkCuZJCLYEQG2leivhTLqGud6QJBH+6csWcwWVuo70eASygfd6kXjiH tnayOFmzjzcTEPQd+hKfMSAhCrCzdycWK6onrWOX37lh+zIUx2VTQvyJ8kp3c6ovE+hRGNEuae0 WmN6hiLVMV4iVK+a0hQ== X-Proofpoint-ORIG-GUID: 0bXXzMX8NBThoGsgh2oHwB841qoP9EuA X-Authority-Analysis: v=2.4 cv=TJZ1jVla c=1 sm=1 tr=0 ts=6a049336 cx=c_pps a=CWtnpBpaoqyeOyNyJ5EW7Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=CQ4qV2wi1td1G5PDrAEA:9 a=QEXdDO2ut3YA:10 a=vh23qwtRXIYOdz9xvnmn:22 X-Proofpoint-GUID: 0bXXzMX8NBThoGsgh2oHwB841qoP9EuA 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-13_01,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 impostorscore=0 spamscore=0 phishscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605130154 This driver intentionally uses the fine-grained approach to creating platform devices. It assigns a software node as the primary firmware node of the device it creates. Ahead of improving the reference counting of platform device software nodes, switch to using device_create_managed_software_node(). This way, we create a dynamic software node whose life-time is tied to the device to which it's assigned. Signed-off-by: Bartosz Golaszewski --- 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 706783863d07d66b4685005d6649b3cd143ecc3b..5b0026bdb1c609bac12cfa1453c= 685846f3b731b 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; - pdev->dev.fwnode =3D 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 Fri Jun 12 17:26:17 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 5BA86477E38 for ; Wed, 13 May 2026 15:05:31 +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=1778684732; cv=none; b=guNZMdupY87Niom2+WfLQeP/64SxqpNPdYIQYfI4D0fwlb6o9r537Wo3+GKxtwHXXWdCBmFVw3kdQ+iXFJ4ATUCcPrg47vNMqz8zFzKWgrPwbby7Spcsy2WR5+6KOQ6zfnW1WHls5VhB1LzicMvlXSe9w0wE0CFIiCKrcW4HcCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778684732; c=relaxed/simple; bh=wOSsRJhHsrWDaQxuukzG68TWgsF2FASykc4TUq0RZFc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B7bu1YDjYpngC1q9ckOSWllCA7OhNqoEfQXDPM7AnzN731GFDFJNF1HtVAHiO8tDCEq0QtQXXrCjNhUu/pldD/wcRdXmKQwHyKEkCRgELyJfVl1AjuYVa+BrIyOf7HpgIaPZJSGokwkjw5upEDU7pbVUH45XreeJYHAOXkQfD2I= 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=JpVZlKkP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cStsQr4o; 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="JpVZlKkP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cStsQr4o" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64D9jkfL3007701 for ; Wed, 13 May 2026 15:05:30 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= IYR8RcKCxI64ZndZ9Gltf2uR0RvOxYUzn4kE4pE8DJM=; b=JpVZlKkPnU+S+dFH bOoJdd/QMOrOb47PDDMq9YSOrqy//E9p2nF3flXO1pb02Q0NKJ6L3VCOEm02P4+0 Z/NqwEKg0Tlz3wxHM4HYCQKWhUKGHDuXAd7IoSRJ2bawwCSiHQ3aFGEZsKNBRPA0 oue6S41fMgJk7mqnEp9sZXz45vOlWOGHmv4R6Pit9gtPi75p6wTZOxSNZJSTuENS qre1imhcYG/SQs2g11XZmjuIGsyTuWQUaaoSEVVTaH23gxOUMaUfEpHiv5n9ZDuk jBBvfCYaIHO9WlGTuBepESfoJLiPL0GicoW4KYXGvKZ8nOW29/z+NHIWPcTujreF 35ipXA== Received: from mail-oo1-f71.google.com (mail-oo1-f71.google.com [209.85.161.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e4py0h6qk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 13 May 2026 15:05:30 +0000 (GMT) Received: by mail-oo1-f71.google.com with SMTP id 006d021491bc7-6961bdde2a1so14184455eaf.2 for ; Wed, 13 May 2026 08:05:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778684730; x=1779289530; 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=IYR8RcKCxI64ZndZ9Gltf2uR0RvOxYUzn4kE4pE8DJM=; b=cStsQr4ouNADZaPaS3olx3Ho9a9LRO2CtFLAklUeWusDu5TYraM7AEoZ0LrOBVAtEy Jw6oYECZuXERI27DGtGZlbh6ABmPLPvoqDYlX3OexK/67h3bKB+sqNdqqzcjnQUiQgOg AVpJjN9m/Ztr36ZbdjsF6sx49sxqHC5JHJZ/XGF52jUj/mZGXo/5Mv9iaVCdV8oS9RAA 2S1mAelGwEbKXrrfOhEryxPlijhIByMwbYZNGZZtl+Hr4mgJpiP0vxqhIp/uDdMxpC7A CLVWUYXIYpRIh0usDapxn00EAz19jvLTN+8QFLdAv6n8/NRfIL1fpF67+15eQKVk+wS6 3u1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778684730; x=1779289530; 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=IYR8RcKCxI64ZndZ9Gltf2uR0RvOxYUzn4kE4pE8DJM=; b=tLMuWtRa/39vMth3DBj4iuYiij3F6JWDsd78AhWw5m+Ki+Hejg/X8YXcy0VsIvGhB0 loIJ3uC1Ka4qvKK/6ODWZhthznXcBS8eA/hp2ELOtt8oWbtFw4iPQH3IIlPml68Cjv+/ +l6gN4ltiF1jvqwjYAtkxKVVj8ox5qW7wBfwzhEXk1XCK8ew9SVfpryXuEUHfLxKdg6u FYpkwXju8WlNM7LRAiaAQLzmq71uVJvZUL2iYFJTqdiG5hbhXynJjfbA5OaTcsuaWQ4r 1/PLvLTkkLY+FcJC64+EhnaojZBtgrc3moKEG8jWz+00q4JsdsySLtBpK3IJ/z/G9m2I boHQ== X-Forwarded-Encrypted: i=1; AFNElJ/0SUXpp6WbPk5RT0ml5xfRq2Ent/3RXJXiproN8o3091DYHPLKW2D4P43tPVTSxSoNF+kILolsBtEKd2g=@vger.kernel.org X-Gm-Message-State: AOJu0YyxBUgOZ68DIY3A4vaW6wHZDxpUQ8kUwtw15roFKAxyiurfOITJ rZaiMtex5FrtxLd+MiY5FeoMwczoSYJOaMqqv0xYSKsz7AYy9ZBATfVdiLt3ozlwFUi9CiFhloi nzjx41jxzej9Qzg9ULZlruVwTP8NPpbQLTLYTa/pa4St0uAx2Z11t3iUdTPXYWbUPCA8= X-Gm-Gg: Acq92OF8B6+zRijbn2sdUneEuTJ2UguysMHh+Iy7MGKmdulqYMhOOAX/jdsNEsK7Beb GSXkHNC156m1VPTyTcPMCiPah17klKsiy59wRzgCzPSkHWf6iAPaRN+9LroUm4DaBREtxsIg5q0 7rtmwbJtxVObMyUIPGV4/OT+S927iKGSRCXD9nJQSDyn3N4fwqX8zVissDUfZOjSe8Ir8jKekFc ENnnZ/wbM7TzhGHBRnIyRlPulY6o7rvK73II3T+wem65F/+bE6p0u0Eq7evbvwpxMXF0b/ivfpZ fKwGgFkiEcRkVN7m+UwfWiVsN4uEySyRH7kuoWmm6DTAzmnL3OIgIHCd8NjbY2JHtKQhO/SLbCE 4nAacvUwcyB1ExLMNFiFToTWkNhi5Ea5bhb9wlVuwiRd5liuM5w== X-Received: by 2002:a4a:ec4a:0:b0:67e:3ae6:9031 with SMTP id 006d021491bc7-69b7abb78dfmr1668967eaf.59.1778684729468; Wed, 13 May 2026 08:05:29 -0700 (PDT) X-Received: by 2002:a4a:ec4a:0:b0:67e:3ae6:9031 with SMTP id 006d021491bc7-69b7abb78dfmr1668908eaf.59.1778684728905; Wed, 13 May 2026 08:05:28 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:63ec:4acc:c4f6:423]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e8f542e56sm43216455e9.34.2026.05.13.08.05.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 08:05:27 -0700 (PDT) From: Bartosz Golaszewski Date: Wed, 13 May 2026 17:04:51 +0200 Subject: [PATCH v6 4/6] 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: <20260513-swnode-remove-on-dev-unreg-v6-4-f9c58939df27@oss.qualcomm.com> References: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@oss.qualcomm.com> In-Reply-To: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@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=2367; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=wOSsRJhHsrWDaQxuukzG68TWgsF2FASykc4TUq0RZFc=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqBJMnejvUFHWQbuBgOnPq851u1BeQL054POyaE PiX1aFSZF+JAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagSTJwAKCRAFnS7L/zaE w6SjEACH900P69OGo/t0IYyFtNg361mOg1F+/o4ing80rA1iSYnCBwJGeTzBybJ67UPhqiELDKO y+6v0W7ciSRV2GH7zFY1UnA0k1iOj7ZzX+wpcrsaqK9Svn2+LCq0TmzfxmFM+vmZBY2JFs8w1Gb Mbmz0rrF3p3WonLktt/h0sbAifNxzdRHdf6nN/Gj0sUdZX5F60oTWplpTb3aB+YnTHvAPivT2JW 8ByJ+TMvwcTKOhSIbY16qR4eZyR+MPmz7jEbqsLJMnrzjaYaBtjY61gOO4cVTLfzVWPF9xdlOCi muheFSaISxM6ExIWfwU2G9vcm4Q/RniO/6H7lXWbLJ0RMXMzYLFX6k5oMb08VPXQKuHDUuKkdZ1 S60kU69vsLj+gvMJ2o4EVXl8HySjRsUA2IM+DGdL1/aAsNwPWZ7D766NY0O6jFC4SjLE2jzI+01 XSQnwA17xAKPppefhF8Lp3GujvhaC6VhL6QbyeXcPahJXQ0WJNMIaVhrgMQlXyYNs4EcKhZrpzm +MJmtFBqKRQTRNCQ1ipLO99TZR6iyymBynhNIhcOekuK7fpd0wRf9tPsVdx5i5nw5uxGBfWoY5x YP8MnUT6EU1+VsXeP+YBO1CvSntDHtyyUo2gtum+Ch/Q/SjZ5FlbDFLyVaiNx3BJig8nDhc0S9t JswpANlciNCBR6w== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEzMDE1NCBTYWx0ZWRfXxg3gxVhTIWNy jT7AnmDMpm2Q5gqxRQb1KQtf5CxnoBNHVE0OsXNrmSVlYpTN0lEUjw5+LpgDp4SVM6sINTI5w/s bqESjdRV2G25jYwy6bXKYZIASClnAnR2QOJwFMUYB74+lpIOHor0vo5HiWzGA3UfbUpaLx45w89 qVsvfeWU4MIvKaP1Fxpe8QFImHooXrV/G4tFKDWPzyzf7TKERSV4GVL6D1g+IY3i3qbcgLvisYr D/fuLRpuEGD7erX3+q26tUv9zatS4o8o0QkVy8gx9Ur7YWKH7iY56RJzZqypaGKPffjKN3WJPsk Ya1KdzwgYBhe5zyYOgmcisx8PJw4LKJJYNUl5CZTdYFC7tjUfMa/KuB6RCQUPHfw1VYaXt/dApc vBAnVSZox52SD4n6LirCi1ITr/Ew7669GfpjMseNNFofgO7Dpv/NUS6Xfeqwb/fGAAU/voM9OhU ReBP4Dn2JlWAL5gZjlA== X-Authority-Analysis: v=2.4 cv=XqXK/1F9 c=1 sm=1 tr=0 ts=6a04933a cx=c_pps a=V4L7fE8DliODT/OoDI2WOg==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=hkyMZWt8Xm0hL-3MNhcA:9 a=QEXdDO2ut3YA:10 a=WZGXeFmKUf7gPmL3hEjn:22 X-Proofpoint-ORIG-GUID: 06_ZKEWU7exvLMXkdONMI8Ap4WbbqH-D X-Proofpoint-GUID: 06_ZKEWU7exvLMXkdONMI8Ap4WbbqH-D 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-13_01,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 phishscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 clxscore=1015 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605130154 With no drivers that manually assign software nodes to platform devices created with platform_device_alloc(), we can now unify the release path and remove platform_device_release_full(). Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index a19dd22deef2f3edf7cddcf824d02b4e09091852..22834be0a3aeabf538f57ec6815= ab3cd6851c16b 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); @@ -606,12 +607,6 @@ static void platform_device_release(struct device *dev) kfree(pa); } =20 -static void platform_device_release_full(struct device *dev) -{ - device_remove_software_node(dev); - platform_device_release(dev); -} - /** * platform_device_alloc - create a platform device * @name: base name of the device we're adding @@ -878,6 +873,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; @@ -890,8 +895,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 Fri Jun 12 17:26:17 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 A33BF481235 for ; Wed, 13 May 2026 15:05:33 +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=1778684735; cv=none; b=S911M69UIBfJF4er/FSmfVgPqDCOvU2hrU8UbaN+GcedZQrSY2PpEgy/DPODbJ5TZs9RVd9YVZNBRj5AaHZHO9iezGjkTxMhJDg/a92gs7t354/sM1xY2qprmGdlfIMJ8PJk4+YUubjvE+CbB4b/V0yIFNKZjwLz1ZswWRPevfY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778684735; c=relaxed/simple; bh=TN3rwCiI8I0/geUE/YlaOBRn/fGhaU1EpgPqlk5aLxI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ADr5nRMrK+TbH+FYMRlvgoX+EXa9Vs89oWcHFDTLxku4AIHe/ow7rqKzBN5MjJlP3a7Do1ox4F5PnhH9Gjh7SqKFGBfjkPnEXaBUUY/zaRBBGOIyTw3Mxp3/Z2rpFh+roMPk8x4LsL9uvVR7xYNQfxCEqdvLpWqubokT/BGyVJo= 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=jo+Ul1LW; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=S46sb8HT; 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="jo+Ul1LW"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="S46sb8HT" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64DBn8Ch3326359 for ; Wed, 13 May 2026 15:05:32 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= sKKql0vh/Nr4+jL7SLsLVXl/MczXH430C80D/Yrjpr8=; b=jo+Ul1LWRR5iviyZ qLUx6IUh9CqgAMkRLobae3Aj0krsT7uGIoY5CzUkECDWyEZZyQUxECDJFz+4QVts 5A9m+84/fE7PET0ZmQuetwPhPFfb21FyNCpzuljbPd2ETpf46FzRP0CBj0IXZCVI 15WU153OC7ix1C+tCNXQStuR3VxMh8cLoMj0H6quIEuE1H0WBQSAy+g/fnULLjQu tOjAfSkbWpMwrNj7beT903Vawbo+RoFiNNV+LdpuD2kO+fTwFLSN+MT38NHc1D7C UnmNzymi6hC6lgQPRJ9/27KCvR2fnYjWclcm5G9k1Nd5dEe6PEMkX4zq5q+NKTYl 5dQIVQ== Received: from mail-oo1-f72.google.com (mail-oo1-f72.google.com [209.85.161.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e4kvda2nc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 13 May 2026 15:05:32 +0000 (GMT) Received: by mail-oo1-f72.google.com with SMTP id 006d021491bc7-68e924f632bso12403021eaf.0 for ; Wed, 13 May 2026 08:05:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778684732; x=1779289532; 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=sKKql0vh/Nr4+jL7SLsLVXl/MczXH430C80D/Yrjpr8=; b=S46sb8HTloTllcGBjYOsQP6RW9Ae1cVTkbiQmkAZYxSCEesvFUdLF0Fnu3h1zlvumW hnwAJqv2wX5gXIwUKHsGJGHSwHjTWWo4hQlMt+5SMMiwPXDYRIAsH6Tty4i9VwS7lDXB Zh4xFII3OrXu5U15X2BAZ+W2rru0xpX2kvZKVMOTUuTyZJQid2g5SUxIciXA4iOLQx9z yRzbLbVKXbJwf+cG+2L5Tf9039MY2Nz1iM0gG2g6VRxYMPhndMH2jda3mUzZ++rcZhm+ hPa/ZkPAPYuC1JOPh+m0V7yUXvZfGjYd/5CR8avPGrpaX1G3GQ35IJBILsJPIVIBHVk8 uTbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778684732; x=1779289532; 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=sKKql0vh/Nr4+jL7SLsLVXl/MczXH430C80D/Yrjpr8=; b=d4pFbwdNp1cXBtQr0X2oQK8G0OnGk+Kyyn8vo874IH4Gmi31LDZMDSvnde8Cpd2Ira b3leLe9pSnqBVTvpJEhkFP8BBUcT1J/LIgdk7h7M26EmOqxuZqIpfm4TyNi++kjqdB9L WQJOl6IbV1DSzdv0nq/wCE8IVB+tvkhYtgR5P9dkHUmDisy8a3K+oaQkSRhmk8fodjF8 2g4NPEchmSTMj5gLQV6w/UCAM+Kf+T++N1NTt8skTcjNooPmllch0JvNOWLSJXXnrKbT ZRyFOfmED5ypzXGYIfg1M/+CX4wAoQjxHVyIbWuunuVzJbOvgPHW8Tt6guoF8shKk/bM Ms5w== X-Forwarded-Encrypted: i=1; AFNElJ9a01CszXIARGRFBriSnYuY+uV2Qn2W/9jYMhVHwaUpFLnIgycvO7FtRBgXg61bBFNVpoHzXpBMJVwig+M=@vger.kernel.org X-Gm-Message-State: AOJu0Yw09twLxWN8/wbueH5VmFw/YuU6nzcmtkMecQcAS6+SXfGPKCfy 4SNRP3hn8Yszzs4tHJikp+cYHnjI8iUzl+Md+UzzyEqtskEUbaYv9mfyKp9tgVTjFj9L4Y1fEMo 9yLzWBLaWSeuhkg/UgS6tRXRfPL6hb2TQ8FGgQSunhvMAWACCShmGkkvK7GFm8v4NFuI= X-Gm-Gg: Acq92OH6miF6ylFRxnLmAqepXKsPdC3WfB/hcnxa7BCMOvfdiez57XIgaucvCn8/QkR Yr5jR+5PPbScicuhpHigrgy0JYuJKUz1LGbs4UUX4Gu4kiWNKxp0UndsZuZTnjajIB8eQ5NmoyJ RfvOE53+wo38uvoMhVKiVADdvqrMikCjfsPUwJuPJ2yyNZ/Qjm3+L+YdfbdbmUU406Bs7vmKJG6 DdgVEp/ZJ/6YjqYz9rQKYdkp8yOJYz1b7wis2fUR4P1UAOCrBTzN8Zsdsaff8PioGUO2pDp6lU+ 3+pSZzQ5uNoWRa0gIOIp1r+hOxzu5RnnGBbBABV1C0R3RKdtyCq/hA6KxvM1sOmWzLhLyu5JZH2 mdjU0sc2MwdWJQI4VW/CHa6zZDH32oZwu1N53tdf7eNJbL+pyCQ== X-Received: by 2002:a05:6820:81cb:b0:696:1a85:5873 with SMTP id 006d021491bc7-69b78e116bamr1863262eaf.31.1778684731883; Wed, 13 May 2026 08:05:31 -0700 (PDT) X-Received: by 2002:a05:6820:81cb:b0:696:1a85:5873 with SMTP id 006d021491bc7-69b78e116bamr1863208eaf.31.1778684731249; Wed, 13 May 2026 08:05:31 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:63ec:4acc:c4f6:423]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e8f542e56sm43216455e9.34.2026.05.13.08.05.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 08:05:30 -0700 (PDT) From: Bartosz Golaszewski Date: Wed, 13 May 2026 17:04:52 +0200 Subject: [PATCH v6 5/6] 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: <20260513-swnode-remove-on-dev-unreg-v6-5-f9c58939df27@oss.qualcomm.com> References: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@oss.qualcomm.com> In-Reply-To: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@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=3111; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=TN3rwCiI8I0/geUE/YlaOBRn/fGhaU1EpgPqlk5aLxI=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqBJMo2xq6fi/uo8K/0LGlBjhlkl317KmZZ3X2c J8MKavEKAOJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagSTKAAKCRAFnS7L/zaE w8hkD/9/IGJadpEJ5ke4yZkGtfmJ4R8w3TmhY6kcA40le/WTJyx80wQ+gjd5lru5gAsV0mAbnof XlyvWqO7ruMYDglY9A5H4F+J+nFvOMS/sUYYgt0yPaVGTicqBTBWFC6bg/VswcDXVZvsK5n1Nzz PCJz61LAkMZN6yu5dGlnVkv1Z9wUF+aNXja6Vvug7TQBJLWauOa/06K9pqw8z4TEyTOhg3YUc7M 5DLMNS/QvMr7Iqq2uFkoo0s3SbwIwikDbryC2u9yF+E6+QnUWaJk52TJAWLNzXC5EZwrTrnEk3a CZoeQM8C9vyN+27aSWqpUvl8kSy0U+hkRb0WRYWt1T7s+0vLN193mOc3HV7/G2huwCv6+3rkdth kAOlFHrUFOqEpv1IhZalUWt2t1BpB8wsM+fDWUcOof6J0dknJN15mlfITcaKXciSsq+RLYuACPn WUfMSLBQ3qg9+ucgaiArHiS7SjMH2OkMqm66GaahYTvvgdVFbUZPHRdUSoas0OQ+k+Td7xd+EGm iabYBmPyPsgm75klBfAYPT9P1VJXgyZVAXfx0DrrKKc6pfbqb2ilDJHPjhlgCKKvgeTKj3DJYdA j7yHuEsWVjtJosH8fzkOssRL7Fk3I4zjoAYKZ0d5CKBMu6IO8I4HSyY1HM9+ZRhnj+Hagi5RQlC KBAl1lO+06kg5bA== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: EVYwLUFSeB_eZ4NfaTQ3oTKUoOlWxCuT X-Proofpoint-ORIG-GUID: EVYwLUFSeB_eZ4NfaTQ3oTKUoOlWxCuT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEzMDE1NCBTYWx0ZWRfX4SCC3nhNpj8F wv1EJoGI/s9GrYahDhhsPj01f1/yz/PKmIZmZo/drQSUu/7UUdNF36Qq99oICU2U9OeRfPIqHbK EirPYxys+eQj5lXIgH/vH3G5ShAIFe6vGSyM/ElBcXyRl4C4usmRAl+62h0e9po6+A3kKVS0nY3 qnVCFoErQ/nlsiodqaXvgOgu9pzSkoFbyrhpTLU2rZkIagccihYv/OOoEltVeilfT4MwZGlplAA pJhzBxx3ih76OXvWqp1XFI1+Og5stj+b9p/8+yKFnH9LgACIGjn4ktD3GQ+ToRoZZlo1cgQaZGv 1RiJxWiWgb+6K6Yn0QJ+k8gYhnGNNWJuKEiBzyX9KBxCHUxzKwGk2d8W/HD6F8QOHwp9T9pBdSx SEBrsDRMSJwmQvRD7D2nYI0ytMGvT89PO2FZD2qTOw9X5+GhzhRfK524v/mYt0rzYq9k+dcZHVl ExrZPMtHXFLcJuFkwJQ== X-Authority-Analysis: v=2.4 cv=Iu0utr/g c=1 sm=1 tr=0 ts=6a04933c cx=c_pps a=wURt19dY5n+H4uQbQt9s7g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=zroAqjQEQs_9sBr7nkcA:9 a=QEXdDO2ut3YA:10 a=-UhsvdU3ccFDOXFxFb4l: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-13_01,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 spamscore=0 adultscore=0 impostorscore=0 bulkscore=0 clxscore=1015 malwarescore=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-2605130154 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..48ad79f3e193ad932cd943aadf1= 59a57149223d8 --- /dev/null +++ b/include/kunit/fwnode.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * KUnit resource management helpers for 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 17:26:17 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 0F5A2481AA3 for ; Wed, 13 May 2026 15:05:37 +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=1778684738; cv=none; b=RWYPyR/jiGKdjylKX7OoQa4+TLjSpzIfTfMvJM5XfAc/posqOLti/CJ6AVzzx+gsVH2xPU+ZNfP/0wixFxG0yFITKmak8mjz9odvTdmd5lj5en2V9eu3XEO943+SmUvrpFSj1lOiihGYet2Wk/MPZiRbhLcthUiDPZpBn8OSHYg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778684738; c=relaxed/simple; bh=d24dFtlvfMuawvdaUyIJH818bPfYa2BlcPpS/IedBHc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Iie+ctlZ50woc9GAZJzPzLQHQqrmi/0sFAinVKhaDNMlv3nYiYpJ+oKwNdpE0mn/4NdQZ/5B9fPSvplEwA7bA18EWot49qoQPkHpNwGBCQylXnnD2mejIkp6MX+SmNM7/O2nYMlGOCplrQ+Zq3TEULgYxHZPO2TItOyTusSpurY= 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=XdA75/vY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hGu6LjiC; 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="XdA75/vY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hGu6LjiC" 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 64DEvs5Q4082628 for ; Wed, 13 May 2026 15:05:36 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= Bsywl/vy/bO0mvycRo0hQ76HoXFsjSNG8kLAp5bR0FQ=; b=XdA75/vYSLr0ny4t D/cAbWk4mVwIy/MtIQX84WsUeEc38OGKLPj47uaDIBsnR/h2Q5rFsUV3ohblqEHX foF7wK4gBXCfhheE9y4J+OhTVPoDamAxix0YpkvlqKJ9DtAbZIEr3HjGeAeX4IXW DM45+prkTXzN1zjm+luvhym2R/HWy+drkwuD9NDl+f+TtAseMHQ00X3TMXSdiX/+ wYnOegSXB2C/57hOb/oK3R8NqvIqm57nyiB9zAU9IQJ2h7XnNOBMUvWF5/kySGoq 9WrCK2p6Qi+F4P3ZzIoi/3DgOSd5ekKSkXFAvOz//yNQips24SJysH8R30RDYTzt nK0Lqw== Received: from mail-oo1-f69.google.com (mail-oo1-f69.google.com [209.85.161.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e4p6e1ef5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 13 May 2026 15:05:36 +0000 (GMT) Received: by mail-oo1-f69.google.com with SMTP id 006d021491bc7-6963482e03dso2054487eaf.3 for ; Wed, 13 May 2026 08:05:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778684735; x=1779289535; 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=Bsywl/vy/bO0mvycRo0hQ76HoXFsjSNG8kLAp5bR0FQ=; b=hGu6LjiC7x4zbWIpBRhMPjU9lSoejPNJ9HYh4fniLLuvHx+Z/2utnjfkpiEOH41SCF i/fnBWKdsa5IE0PCErOhqQgoZZjR2lhMVxPeAiLHc1Jch9jfdH7qw4w9Q40ulmIsyL3S OgnNKnXxt+vwRqth5jpLQAND75gEypNu0k41ssME2MCH+t0fvI89NNQmQAfHlYnPKAvA /jQsfiHZioEmZKPTePZ2HhwxBgjW/iJgdou1hzrpxDMkkbsHLIvlYwK1SBPNB/pNS3vm 5z+ysAW1oUYmnw9G/LrM+x2c263M1u6NQBXlJ9Qy2S11acZzXtVZ9V1o/F00af0sawSb OcTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778684735; x=1779289535; 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=Bsywl/vy/bO0mvycRo0hQ76HoXFsjSNG8kLAp5bR0FQ=; b=quESIhtFA76G3TUn1HzAMZ1cNtDgkwwNCkPYXvYMpBYJTtTNsfrzoCsNyj0/thaRgL b9a9CpWDr+OtRtyMEPaPaMiw4A61B9jwFPCNRz7kgF8jFx936kGsq78N4YG69Da3vBTw f8ttQdye5zCHA+3Eh1sUXxQn4j1Urd2pxpZd8LagKnjDu1S5ShRAtcY2H/g0B2ylH4Nm 4xy8YWNoiFj1VzaUpR+BsKIsdTKkW5BIU9IUmk13q/IaCURXwHwdDLHyxir5FRWhXEio KLDhsjjFJffqEyzxo8Kqf0lrjUcI8VybIIz8qr/Qpjp8pkjBEeDniOQF56AppwRqcIbC 7uoQ== X-Forwarded-Encrypted: i=1; AFNElJ/1nuZLg51S31B6mJwZHDiKXCoXYFIcsMnwJMuBxankqBP2Y0YLc8V7XWUBUvf3lXO2UIsbMmZWBpikIDc=@vger.kernel.org X-Gm-Message-State: AOJu0YyO61j18tLESWavBdcucOWGqjQxchoC34AluQqFdtgQlSi0eqFv uGxbliOQnrdCaOVdexVxDPLg2p+CmOgWok4jqmXox7JLpYBUeG2aeTKSfClEelmY02m3Na4B6ht 6Kh64qYMof7QejKvCd0MPdy69y6+M8qznM0X+iT0kJteRdrKvFxZeWK6ja/f90AMPjVk= X-Gm-Gg: Acq92OFu0xPP+YFqM+csAfSMgOyKLNQNGP0J6Fh8uHnjs1rHRwe7l7TDm60khFIK7wQ ukOKx1KjU/R3eWnndy2HJvBXSVHJyujzbsh6KLbyW3st00ek+BGwJQC3MZsY1C3HlvUGhOujtfx iBwpbaeaT6w+Lmj7IF6wRDVXYH2O8mJ7k9Nn987rkC613YxK38lvext3CI0OviIBeffyJlC/uzy i69MNp6VARhgd8x6unhhxs0nc8GeeQHjaRcwQ4A44tqO7ymSfWw5XQ3xJDTtUZ7iCGNsxj/icQW YBHDkRD4opWEWpTPniq4QvYocvCWrLRma8RfwdJd6skBHxr6J7G3A327639yAsoYJmqvOBF8yMO 8i6YsMbX+4uytedF84ZUxr6SkajOhKSjqDZf8Bf6gL7yOY6Nkfw== X-Received: by 2002:a05:6820:81c8:b0:694:8fb2:2c35 with SMTP id 006d021491bc7-69b78d11428mr2055199eaf.2.1778684735320; Wed, 13 May 2026 08:05:35 -0700 (PDT) X-Received: by 2002:a05:6820:81c8:b0:694:8fb2:2c35 with SMTP id 006d021491bc7-69b78d11428mr2055135eaf.2.1778684734742; Wed, 13 May 2026 08:05:34 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:63ec:4acc:c4f6:423]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e8f542e56sm43216455e9.34.2026.05.13.08.05.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 08:05:33 -0700 (PDT) From: Bartosz Golaszewski Date: Wed, 13 May 2026 17:04:53 +0200 Subject: [PATCH v6 6/6] 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: <20260513-swnode-remove-on-dev-unreg-v6-6-f9c58939df27@oss.qualcomm.com> References: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@oss.qualcomm.com> In-Reply-To: <20260513-swnode-remove-on-dev-unreg-v6-0-f9c58939df27@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=6353; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=d24dFtlvfMuawvdaUyIJH818bPfYa2BlcPpS/IedBHc=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqBJMq1jvlIrjR+1YjAHxLTODuz/d6Jvy9zNVaq VH0oioMXqKJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCagSTKgAKCRAFnS7L/zaE w/kVD/9g7s3fsgMqRqQDYlvSLGPgfIEBS/V02e792MpgIbfqbt3OrJE3pCAhbXHDtUj1TSm/Hn+ sCgRxmmGSjSKA1yyYG6q6ssgJF/wbHBeanRYyo8X1UUx3jKw3aGBNNMJok+6dOszuJH1+TQzCmm IkC1Su945CkDf9qGvq/zEeW3y43q559qBKDFTIFuRrPOpd1HjOKnwz40ejS+6tJmNVs6WcQXBw/ fMaE5sesCr/Hk2xuw/PiPjNiNkIDM81dnmY7H+CYXY/REWh4wmMu5z8IlWNGMVRn53eXAKow650 4lYR5frk0zW+b2bXKX0ZBI6I0y2lU03MHRzJiD7XnVxHexSXC8e39AvgKJ0KfSzxJaSS5pZLFLM uIVYWedC4YBdY7zNd3QAb7MSPyHy6jBdlIArcYW02SrFmHp/3u/gdeEcPOA01qZmvwp9xWBBug4 AiAiXIPtjeHqbEUvgLso3T8JU/xD81qjWqtSRpHsT1Fv/wM4SOCN1jJ/LwDkctyhGA2jt8Cxr9U 1y5oTIuBfxY1YueWcahkTJerriXbrZhefQ6u+j2+EAVLzHaVGaocjgULZRJhJs4FQ0lU/dULB5t KRRdXoFLhLSaCn1wuBGoboof4TVxdMErbJ62u4tH4JuGngxfXuYYVjKPVyrapCL0S5AsEK+czxG 8JCBEswJPqdyd1Q== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-ORIG-GUID: DPeCL1JfNCiHDSZuoQzjSkaFt4L6qLZu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEzMDE1NCBTYWx0ZWRfXz9wf8sdJK08f BNlF3hmsis1v5s1AVkRJUG++1n3BikYSW7+kb7EtMDzQby6K1B8YjMnTflMTtIfNjbozic3spiv ODBCR/NGxOnqGmz7+UED6boaCPk2EcyOOff5A7tdTX5CTTg8q6C3AL3myt69MDEpee8x7Pmxxbe lqujyHhPmDNVdHIP0XhZpFoWJVbkDGX9CMfDUaZW9Phz5kA5mmkjq9F8MDET0nikb86ikqWb8P+ Np4GL9fLEU0TF9l1Hr6O8O8M2PNg6bkAbWJMuMDfNdAkhaqfvqsqbkXCfwb1TCMYwtcD7aqdsq2 N8uAnqRx9dXnDqgpn7NU0ZcwBJnh7ClKd4h6SQmnXzDYQhvePRKmCI5a4d25ddYT6l7Kb4CvJfO n7jPPz2Jeb6H+PtuGMmZAmmMiaUZvIU3AVwGHyvktedhbnR3XokazVDsWgabTOAGgH4KDeuUJ7u Fe9JbORJMNv1D2g1IQg== X-Proofpoint-GUID: DPeCL1JfNCiHDSZuoQzjSkaFt4L6qLZu X-Authority-Analysis: v=2.4 cv=Wukb99fv c=1 sm=1 tr=0 ts=6a049340 cx=c_pps a=lVi5GcDxkcJcfCmEjVJoaw==: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=zydxXWD-JFuk5BhJ14wA:9 a=QEXdDO2ut3YA:10 a=rBiNkAWo9uy_4UTK5NWh: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-13_01,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 spamscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 suspectscore=0 impostorscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605130154 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 | 166 +++++++++++++++++++++++++++= ++++ 1 file changed, 166 insertions(+) diff --git a/drivers/base/test/platform-device-test.c b/drivers/base/test/p= latform-device-test.c index 6355a2231b741791b54eb78af42e13f31f745184..69551f01eb82caba58fb79cbc23= 0c3c74d0fb3e5 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,172 @@ 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; + 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)); +} + +/* + * 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