From mboxrd@z Thu Jan 1 00:00:00 1970 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 38D6141610F for ; Mon, 6 Jul 2026 12:54:36 +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=1783342477; cv=none; b=WzzRSELtFINo7oUV+M2RgWGytqqahnzeMNS+lICP61aiNfHzIBN2IWDggKWZEfUil1+UWuBqEjTPLAiP3INsEel6uIqHxKIa+F6cz+ij5t6m/WUm5DdD6CWLa2oKpObmKJ2jBYvW4JbAHmIkqnOhgZ4oaViB7T7uLzuYDDQp6Aw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783342477; c=relaxed/simple; bh=j/ZK6ExUuxxG1XJGSDlCW2aa45sq27hCD52obe1DfHU=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=U0HbchoOXmtHvUyW0ozmk/7ger10BC9GIGhM+YxTr58qjJj36Qv0ajfhjjDQfLZ/6qhvWi57busdZy+N2zN7uPXAhC8Zhm1xG6EWCneH+TmYwb23yRM/qkSuyDqI6JWb3nyyfi3MvDITGHFGfZgKfnJAUqDbX5CZxoXnACLe+sI= 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=VbXN+urT; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BsIZKCnb; 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="VbXN+urT"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BsIZKCnb" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 666AxFbj401621 for ; Mon, 6 Jul 2026 12:54:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=b0uvwgvESdJ1e3fK+qKM0F pZYStYyRNLeA0rpRF18uo=; b=VbXN+urTyJRLx2ACHDzsNAPpAALgCUrBh08uoK AhsVuC7SZJGRxAh+OsD42P1cqbjkoFmh11UjftxCggIFs26Dfzg1nX0dch50k4dG kgKunl5PmS78G6q+LaSzs0rMbTsCu39iWGl5649zEE+OBI/uthngD7XYTG4tE4E6 RcsxH069m6JZl/5N95KS94r5bcm6Ce2FQM0xDJIm4dO9oM0seQ13CyT7Onh1AmPV Gg0ZJCfETuwtp6FPLfYgups6+8MqCmRa9ezOWh0Nii4H859vOdYP4XbXV+9by2Mr uooPM2IfBdMgL7SnK1M6sfG8jj79ms6yiDeGrjK8rdocJByA== 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 4f8a3grn9f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 06 Jul 2026 12:54:35 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92e68cb7a3eso554998885a.2 for ; Mon, 06 Jul 2026 05:54:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783342475; x=1783947275; darn=vger.kernel.org; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=b0uvwgvESdJ1e3fK+qKM0FpZYStYyRNLeA0rpRF18uo=; b=BsIZKCnbJQ0gFg9x1hU99nTiWdlkRgCanyiRs71bbCLvbbWQYk3fJSDy3lMFe97VJK qvFVm9POpbLPEWdD2Suaqio2QB5aysHvp10rKzoyhRxUf1rv8OX0wbmij+Y28oiAUaE4 bB0d3gwpmENuyzXL8CY5Yz23HylbzZkCyPEKwSdbmSLQeTKMrQttL96byCH2Bpvfqw/0 j9tqhzNp7utAIB3cateXnYLAdvhcGINUkciLjDk9cH1lz08d9cPYUIdswGNmjVSj4HsD OxAnCkn7azrkmMLIhfglq981b3YjG+2HQy63X5DRJTDTHnBHoSIGWUvwUIkARZ+7nvMS qjxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783342475; x=1783947275; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=b0uvwgvESdJ1e3fK+qKM0FpZYStYyRNLeA0rpRF18uo=; b=RP7bLz060ypF2RpfWL3TdrVWxJxv2AssmwqcPJWuHnG/8P4rPuZmG79XAfqpE911vB ejy8qOMdcazxOPwb/ow8yvUzJOhSXVAHfGT/7zXnIyg2JayV6/d4+5UD09PK5Y2oegNj AE1nCPPRpeWDeXdCU2msroqD5kWvY4C0VQ8+WwD3CN447GyV0C5tsK/ZtZU0GOqvpXqE qj7XEEx35Lur3UU86eU3gX1e3XoTqBZZNwF1WfMuQa3B1N4Ii6v0Fn1QJfO6r6AOCYwh NL7gR9OmEFd9Unoi4ZdUnzdQ39rIHtUMNkHWIpRCHUJih6uuWoqHd+rORYifiF4qv0/C SbHA== X-Gm-Message-State: AOJu0YxOSMY1tIWIUBdRrq3yzDml4tz2emavHy1PhjqTlMNx7kjWouTa yL4BcMJtW4vbg4CmX8wevIpmNkv/+3AcQru5reXaSd5FWLN83UMpx19q8xPbXI4Q29CWPx0f2Yj abB7k204kFPAkm3tJBiGLnPEeqmfx0nifz4kVkC9t/qd/jGV/gnj7V0WuFwvhiy5TN+w= X-Gm-Gg: AfdE7cmbvk1TuOFV3HgvoQrHvx9NHJRKakaBNTEgFSmoIsNn4YBEWQ4wwZLM5rnsFQl DIpupH/q5JgwRrnTP4Dmk4eivhMdO1vb638S8RpQ+Cxt33J1OAYwsNpyHMhxelPPmdJUw/Co5qa yxqb7Ez7sT0crZTXAUkB/M+NutIu1dqafXxoVJ1gaQ3Lx+jhgBhLglxGPqFX/fWh3iHIMgS4ebd th2kcx2/HcNBPeXFExvNs1TLRHtjlM5ENV7d/AUqq1W9nCbHfx9Jaos64dpFnjBHZLON6wdEupl YXYb+zcbBBp/kI0fFGDolwkRHG5hvEOzxMXf463ngLRu/YH1fLK9D5sJbC8l00/1JWdJ/ami0PF 3hnffjoxWsjjTt0dSH++u2zDZ9hIiLOtL8XhBX+bX X-Received: by 2002:a05:620a:6f06:b0:92e:6a0e:a192 with SMTP id af79cd13be357-92ebb57e75emr57465285a.49.1783342474532; Mon, 06 Jul 2026 05:54:34 -0700 (PDT) X-Received: by 2002:a05:620a:6f06:b0:92e:6a0e:a192 with SMTP id af79cd13be357-92ebb57e75emr57460985a.49.1783342474072; Mon, 06 Jul 2026 05:54:34 -0700 (PDT) Received: from brgl-qcom.local ([2a01:cb1d:dc:7e00:86f0:c42b:ef4c:d3bb]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1e736sm26856931f8f.7.2026.07.06.05.54.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jul 2026 05:54:33 -0700 (PDT) From: Bartosz Golaszewski Subject: [PATCH v2 0/5] software node: provide support for fw_devlink Date: Mon, 06 Jul 2026 14:54:07 +0200 Message-Id: <20260706-swnode-fw-devlink-v2-0-f39b09d50112@oss.qualcomm.com> 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: 7bit X-B4-Tracking: v=1; b=H4sIAG+lS2oC/22NwQ6CMBBEf4Xs2ZJSgYAn/8NwgHaRjdBiV4uG8 O9W4tHLJG+SebMCoydkOCUreAzE5GwEdUhAD629oiATGZRUpSxlLXixzqDoF2EwjGRvQhtdGZ1 jobsc4m722NNrd16ayAPxw/n3fhGyb/uzqX+2kAkpulrKouryrDrWZ8ec3p/tqN00pTGg2bbtA 1QvECW5AAAA X-Change-ID: 20260609-swnode-fw-devlink-cdc8dc4e5cb4 To: Brendan Higgins , David Gow , Rae Moar , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Bartosz Golaszewski , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Linus Walleij , Dmitry Torokhov Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, linux-acpi@vger.kernel.org, driver-core@lists.linux.dev, linux-gpio@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3679; i=bartosz.golaszewski@oss.qualcomm.com; h=from:subject:message-id; bh=j/ZK6ExUuxxG1XJGSDlCW2aa45sq27hCD52obe1DfHU=; b=owEBbQKS/ZANAwAKAQWdLsv/NoTDAcsmYgBqS6WBYQrpy0ZHmwjOS33DDQLwb1xXf5+gQKAD5 zCVZbGJBKqJAjMEAAEKAB0WIQSR5RMt5bVGHXuiZfwFnS7L/zaEwwUCakulgQAKCRAFnS7L/zaE w9NPD/wO9u4RjtzAd/KO/SZCDbQHuPhkalkh8Xr7gIsSTHw+oKCxzvf2wSR+DSmlELrGqjd9pUh C/Ksq86FuPN+JnaaRt3dGErLGTuTq3zALu6KNWPd4/ekUzK682W9ps6Fv81MueyNh9dclA0eSJ2 GdlREszlGGdXPA1PMjpHUNks40RsfXqXonSsbBgbTPvDzB0XUEz7K+vWSSYSA15xxvS4GHgk0n/ PNHHyAVUj+O+ToUIE1zDc0HeTspMLxvdPbmlundeNg4RWkgmzLYyMboeCZzXv3j2vCvxc/Q5RG3 SBxWLwxfgMCe817xmi6Mp6Us2UaZ/JxmuRWHBvqZ8HH1o/Q08WTtjtSI+CrOmoQt0uKlyJR13I5 rpj7UOT6+Hk66adqfRZ019jyRBLKpT185TQXlK97lY8+jsg7CObtv9/nS7o1bfgrPywmuozt/oz cqOBcdfNbCfUKKrj9XQyS0g5sRPv556ykS/ZID1Kmfb0y7cs9oyaplRUCMKrxNK96lF+9+Sl7+M 6SI3YFpH2bwlozCSzRsqnwo7Cm+2bdfMmCzbv86UmKJ3YTmXPgArKOKb0kV0g3/ur6VWLyACMyp DtPd0VbFrhoFKuVqoMW2bDnwoi+bgkwNO8OJlEXo7VrEHge+6dMQgFa3UMPhXNJfKKmxAPi77rk Gc5jOBH507DyGYQ== X-Developer-Key: i=bartosz.golaszewski@oss.qualcomm.com; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 X-Proofpoint-GUID: IZXXNva5Ge5hEqB1D0unIV1StCUk6bA4 X-Proofpoint-ORIG-GUID: IZXXNva5Ge5hEqB1D0unIV1StCUk6bA4 X-Authority-Analysis: v=2.4 cv=CPYamxrD c=1 sm=1 tr=0 ts=6a4ba58b 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=Um2Pa8k9VHT-vaBCBUpS:22 a=bC-a23v3AAAA:8 a=EUspDBNiAAAA:8 a=Je3Peepqufej3slHyXgA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 a=FO4_E8m0qiDe52t0p3_H:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA2MDEzMCBTYWx0ZWRfX69sCGKKXTFfP zPmlDSIdN3Zthu6jJn490IQNiuLF6LJpZ8nXbwFFY9C9kcQZUbUhfcZKCoYDs6/wNK3gttjGmEY Iph7ThwndUE61IWfhXIJ9mFFUnPQmrmJOpfBTp5vapGsj2RBUUSfJLo+Er9L+Xu2r76iGsZPIJW KobHBehryxcS9yC9vbiPqzGnpzHOUMfiISSq2l/FEjWhEcsS14G7f38sFYoDkJaTBgpmslWVQVj DgQWmA+Iz6/R8ni9o47JI8s6kCpr+KXizw3PuNDLPK0WcGuJjs75hgFil8FcilvsnWaCR+M9uEM ZGDLKfJwcHXmbA82yOJAFNUrZZrIXhlkVQYv4UgNlSr+xm6R+M9g8oEfwKCXqBoznCVzu236VBm db9WBSlWOi60zAwSCrYkFl3DVI1gi49AopLMfTlKGQqBw4aNkAu2iDMs98pwdPVHgl4dwjfYmVS cpDOrAoek0bn8ymDXkg== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA2MDEzMCBTYWx0ZWRfXw8rM92R3lnyy 7j0+MpcG1BH0EW4whJQ+8yNIrmHC1OGU/um3DDJQ3AGfqfcj/HvYMfAfzkLjbwLno8qWImD5ZwW qk6GMk0Dl4BMRttqboKAfdU2Bc7/dAY= 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-06_01,2026-07-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607060130 Currently only devicetree systems have their devices' probe ordered against their suppliers automatically by fw_devlink. Software nodes have lately been used extensively treewide to describe references to resource suppliers: most notably, the GPIO subsystem uses it in many places. Now that the conversion of "dangling" GPIO chip software nodes to using real links is almost done, it makes sense to ensure no needless probe deferrals by implementing the add_links() callback from the fwnode interface. This series extends software node support to use fw_devlink and adds test coverage for the new behaviour. Patch 1 adds new kunit helpers that will be used later on for test cases. Patch 2 implements software_node_add_links() modelled on of_fwnode_add_links(): for every reference property it resolves the supplier and links to it. There's no allowlist like in DT - a software node only carries a reference when its author explicitly wants one, so every reference is an intentional supplier dependency. Graph "remote-endpoint" references, unregistered supplier software nodes and self-references are skipped. It also mirrors the device pointer onto a secondary software node so fw_devlink can find the supplier device, and purges the fwnode links on release. Patches 3 and 5 add the tests: a kunit suite for the add_links() op itself and GPIO tests for a real-life use-case: a GPIO consumer referencing its provider via a software node. Patch 4 proposes to add myself as a reviewer of software nodes. Caveats: a supplier software node must be registered before the consumer device is added, If the swnode is registered after the consumer was added, add_links() has already run and set FWNODE_FLAG_LINKS_ADDED, so the late supplier is missed. Graph/remote- endpoint ordering is left out for now as well as there are no known users. Merging strategy: with an Ack from Kunit maintainers, the entire series can go through the driver core tree. Signed-off-by: Bartosz Golaszewski --- Changes in v2: - Use loop-local variables where applicable - Reformat a long comment - Keep trailing commas on array initializations which may potentially be extended in the future - Add missing headers - Update MAINTAINERS in commit adding a new file - Initialize arrays at declaration - Fix signedness of ints where needed - Remove unneeded DISABLE_STRUCTLEAK_PLUGIN switch for swnode tests - Link to v1: https://patch.msgid.link/20260629-swnode-fw-devlink-v1-0-b90058b41839@oss.qualcomm.com --- Bartosz Golaszewski (5): kunit: provide a set of fwnode-oriented helpers software node: add fw_devlink support software node: add kunit tests for fw_devlink support MAINTAINERS: add myself as reviewer of software node support gpio: kunit: add test cases verifying swnode devlink support MAINTAINERS | 2 + drivers/base/swnode.c | 79 ++++++++ drivers/base/test/Kconfig | 5 + drivers/base/test/Makefile | 2 + drivers/base/test/swnode-devlink-test.c | 339 ++++++++++++++++++++++++++++++++ drivers/gpio/gpiolib-kunit.c | 273 ++++++++++++++++++++++++- include/kunit/fwnode.h | 26 +++ lib/kunit/Makefile | 1 + lib/kunit/fwnode.c | 116 +++++++++++ 9 files changed, 836 insertions(+), 7 deletions(-) --- base-commit: 8cdeaa50eae8dad34885515f62559ee83e7e8dda change-id: 20260609-swnode-fw-devlink-cdc8dc4e5cb4 Best regards, -- Bartosz Golaszewski