From nobody Mon Sep 28 21:52:20 2026 Received: from mail-oa1-f48.google.com (mail-oa1-f48.google.com [209.85.160.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A78E134676F for ; Mon, 17 Aug 2026 00:00:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924839; cv=none; b=QYO8YezipGtPVJRznoDkpJivpfPM2etfhCdXMAleJg4jgPCT6klUm2MXVANjgSjW8OM6Lz8yZ+DhWHwMeqjqUOikd5H7wQowr9jVEVD5hbHx/mrYZQG4zY8CXPON/ZhIYZEViqI46wMEbqCImsgUQ9Neqw4rtOv1UE775Pn9g3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924839; c=relaxed/simple; bh=R4LaImY/2T66WrlPaQnoTaMqE3LDAYsVdXsxUsoQMts=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QZzZC0hazilTPayZ1054dB4+I4D/nM284LWupfPS8BAh1aVaOTKU9dDAbTKyzJGp6neXMFtunD7cI7IFeL1itt9kusGrhRRDuG8nZTY0S8GwPeWVUzkElfV+UDbx73eJuEzS3HcT4AFDO6ZGpZsim54XN3qpiix1pDf+eMTRWrs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=r3CPhCiX; arc=none smtp.client-ip=209.85.160.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="r3CPhCiX" Received: by mail-oa1-f48.google.com with SMTP id 586e51a60fabf-448cf99c133so2961934fac.1 for ; Sun, 16 Aug 2026 17:00:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786924836; x=1787529636; 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=NGDW8YHqJRyxuOShb3YiQbckQHmyOYQ8jIzHmdrCgnM=; b=r3CPhCiXXkR0suOT1mSnrs188I3B2ZXVUdkNH+syl4ysJ61KamnbTLe/lqpGDOSrqP 4i+8NVL4+EuFDqX9wYCv7A6HzixdbmLWEIqugcJrSR/L0pAvjOleyECmziaznfCrc1HT C/SFEHO3w0VpS8lxHGk6OtQCt1wQsnbfWsYhc5Mkq5AA6AwyZwMObaASnl//3o+2N2O/ IaYL4TgcXqutHPJYfnrUkNF12/12eIJ9ev7Zo8xddB6N/bgT/KBaCimdwTQ3F950Bckb BvjPIPo+IthecXfZJEeDSaclTamHU7ak68F9+Jvy08AEwUiz1k+BA48ZxJXq2qV+i3dy pQbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786924836; x=1787529636; 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=NGDW8YHqJRyxuOShb3YiQbckQHmyOYQ8jIzHmdrCgnM=; b=AlRHEoLZ3hn5xESFrXXS0i/qhMWlNWvwjrwczywP20zU3vShgoImYUokg2XqnIVLBo 1RTlvIjHfNx1o64kiLy2Cogy9vAd2uLXk15N4KPv76FZXY2WZ2jLozMM1JTegsDcFMdO AcJNdpIrbI9j4pwyR2pszr8EsDZW+0+pGZ2D3B/aeMDxwIK24tt0ZBDVVRdE1dzouPh9 d03QkNtXRT1cS6euxD1kz2qgNIQpHr65cIZLf5LD3eqODkXbwjJDag2Q8ENn42NU7o5J Am+W4JeZBqvc8UD+bzwt38fxPi7hLMSDUN8Jg+CImoxiQscbHt3PszjUj7StsN9oXfEg qrTg== X-Forwarded-Encrypted: i=1; AHgh+RroaiMOEf1+ptDPtZz+xy5fiBX0RmzkUhi6IT9QKlvn+EfijYpQM06TislUGsWpwr6KThbUEY4pRFXM0f0=@vger.kernel.org X-Gm-Message-State: AOJu0YzZM7D8B18p3fNHCmOSkuj57zrlTDH0ihkdWN2pFLVWsYwN6BmM cQCk8SOh0A0BUPRvoOUk82hdlK83DOjPttJNQh12Q4A7CK4H6m7mPpEU X-Gm-Gg: AR+sD12QeXYqfC8dCgVzMHNO3hGlmK1n9q/Y2D9g1RM9jFHnwsSkCJRONHUlOmCWYeS Pn2CffnwBY6Uc9IshTgRKOOMOzmwY0LB8CIZ2JBFevx6+D53AubschISPxwdXDGZEjJwSHSeb3R e7P00RvLZv4LznwdXUF8hdMPdy3iopTOGw/pYowxFTdxJ/xsrFofTZE8zNLNZIMyUJ5VYO5/EpT PXTxyzrLbPaGtJomDUkt1F2RkrX+uMFGfqdYWI9ynQT/vMvwSr9KHgEe0JdO/nimtnzdIQ2fA9X +1Hb7WAcLyGQh1trYsOcvlATStac3i9GNdA3iF52VWljb0aB+Pn9qFaMPyID2FUR54QLeLzUa7G xU/4wpHJgeN4AvZyaAB35uY8AkbhiKptXEH3uNbmHeAZbOMo7o+MILOYCXV1N5I9OOZ1KIkvxfC fWapvgHknF9Fvs5qfgHFzlVL2stZnALfjmbcdM6Mt85zDthMINY4bT1+FhjGKPp/Wbh+m7x/NVl V9hJqXP5VxJ83/WEkTfrl1B8C4C8RsNpq5OADp3Nj4Khlw42ExKmRm6J9EE5Y/KcadAIrxoZffp g04b4pwjauQVjH6m7V1Qx4EGwPnq4OdFtA1fQ18u+s3CAV0Kh5idzCcp5QDK/HrqI7dDWTNSbYb XL3DcOZBB3H0XEso3 X-Received: by 2002:a05:6808:10ca:b0:4ab:25f0:1a8d with SMTP id 5614622812f47-4b240453a64mr13286027b6e.16.1786924836477; Sun, 16 Aug 2026 17:00:36 -0700 (PDT) Received: from [127.0.1.1] (184-96-154-59.hlrn.qwest.net. [184.96.154.59]) by smtp.gmail.com with ESMTPSA id 5614622812f47-4b2714dc18asm2556802b6e.17.2026.08.16.17.00.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2026 17:00:35 -0700 (PDT) From: James Hilliard Date: Sun, 16 Aug 2026 18:00:28 -0600 Subject: [PATCH net-next v2 1/4] of: property: skip links without a consumer 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: <20260816-submit-phy-package-fwdevlink-v1-v2-1-23e55dd59fad@gmail.com> References: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> In-Reply-To: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> To: Rob Herring , Saravana Kannan , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Andrew Lunn , Christian Marangi , "David S. Miller" , Heiner Kallweit , Russell King , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, driver-core@lists.linux.dev, netdev@vger.kernel.org, James Hilliard X-Mailer: b4 0.15.2 Supplier bindings can map a property node to the device node which consumes the referenced resource. The remote-endpoint binding uses of_graph_get_port_parent(), which can return NULL for a malformed graph node without its expected parents. of_link_property() currently passes that NULL node through to fwnode_link_add(), which dereferences the consumer while adding the link. Only create the link when the binding resolved a consumer node. A malformed graph property then creates no dependency instead of crashing while fw_devlink parses the tree. Fixes: f7514a663016 ("of: property: fw_devlink: Add support for remote-endp= oint") Signed-off-by: James Hilliard --- drivers/of/property.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/of/property.c b/drivers/of/property.c index 72cf12907de0..38c0c7dc428a 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -1620,7 +1620,9 @@ static int of_link_property(struct device_node *con_n= p, const char *prop_name) =20 matched =3D true; i++; - of_link_to_phandle(con_dev_np, phandle, s->fwlink_flags); + if (con_dev_np) + of_link_to_phandle(con_dev_np, phandle, + s->fwlink_flags); of_node_put(phandle); } s++; --=20 2.53.0 From nobody Mon Sep 28 21:52:20 2026 Received: from mail-oi1-f169.google.com (mail-oi1-f169.google.com [209.85.167.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C5743803EB for ; Mon, 17 Aug 2026 00:00:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924841; cv=none; b=SfVID5erpgtx0jOoXzQcpzGb4OVa/JW8P4j5IvMqypNgP1VistdZ0X62zBpNn0sAl1Kv7JwXjS419WwWZPF/6bdx8y9PflhFkGkgMVRAhYpRHhlNqvAQVNNym/SAFjk7jHPhVa1zUo1FJWppG/CxDcdWQvwdijJFmvkaXilVeR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924841; c=relaxed/simple; bh=1tIKif3P5fdyg5CZ8dhfBg/gndunLfBUaB/WNclV6oE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oEk/7erAbGEdta5AtnANJsm6pB99nPPlHaKjaMqEzfQkHp+qN8OeQvLOibLJj8u8xZgI+wQKa7U5SUZ3/hxu9rmgeVwQLjuV9uORKdD4kQbjhNGBZyH3MvLb2aqosjEyqU8X1zG6Ti8C01k6rCROMVn01k6VdaTTLX+2yDQVKi8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Juz345jT; arc=none smtp.client-ip=209.85.167.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Juz345jT" Received: by mail-oi1-f169.google.com with SMTP id 5614622812f47-4b1be215736so1837555b6e.1 for ; Sun, 16 Aug 2026 17:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786924838; x=1787529638; 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=RGeTM77wWZWsSK2KW0+uwZ5W8XboIGpTuNX+ISzK3/o=; b=Juz345jTYB470+UrWrxqVLX3vzpcnRItbWwR6jWddQJ0kT9ljaKKQ4Lo9wF5gjCAbr C4HFlHhs/jkdiaXdtf3GXbqU22nbHW2BxgnESx2Rd0VbUlA68o7e3+51jI7yWxIy1wgW /eo8bDUUz6BFfyxHoEgf2WFUGBwl3R7I/u6atP1sDCb+PLM4btaIxpcPR7cvENKtaDJV 24C/MOyMtMbZKcmPZI4TlnCFIWMoJo+fXkKuDRzguWVpnhgG0YeUvuEpEKmZCuxh+Ips XRoRGrcgE1TNHynr/YW8oQrR0cHdAJVukH+/44Zdpd9w8RJk7fmkTfZGrgsHiwGEc2S3 KePA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786924838; x=1787529638; 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=RGeTM77wWZWsSK2KW0+uwZ5W8XboIGpTuNX+ISzK3/o=; b=ceV5oa1nPtZGxiVxA4m87pCMnz65o+TqGWW08wYO5hrBkxSEMGaYQtcg2BaV9h5vlI ydo6bjtfEPKfJYo2qrA1sbzVKHFx9AksRHWY/3j5HB2U/LIoCYzK6tYqiv/UFZRezIuP BRJl6mI51VEqMR+TMdnmUSXeJUBIPMmkf1n7XeZPryYg8Bb+Djb8NLcj/EHsoTwa99SO GGNtDwBDRUJ2oC2S6sa1/JhNe+dpGrQ3PExCiY+Nk72gBmMMLHL5bPzqx3zcAKfQspQ/ TFTKg50qHUt970qLQvV16zNUHJS/l765aQ4XWGMLVx/IsNrdVR3WZIuzTKObVRV/8gti aTvA== X-Forwarded-Encrypted: i=1; AHgh+RrxynEK1W41vToo43/Vh/+Kvys83lXjRluLvtNMnwY3ENIZ6ZdgroJC7CkHSI5+SuxpBBzWzwuYLF5FJPQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzbWYIRhyPA5bdgbE0AReO7IkBGZWNw58kV1vD7D0Gp2lvcvJo9 qG8L4nEaptiBJiVp6S+thYxRGHOUHFFyyBGTlT8m8LNDFaIUOUb8JBjb X-Gm-Gg: AR+sD10AszZkzbdmP0hQJ19sXSRAcfrZrTBldTbqcOKXX5ELyD9QBAzMmT3fHnb7lh4 ozIBrY6rOOQFOugSMPZnHLIYk+hCYVu5EGRHqxoJ4CGJDxCg6nj7RkdSQ4ptfuL186Bi5JcW++2 TurFq284CtFNryfEL8PlzTjbgV9rbr/58JjTMuo60zm98zjxx+SxwctIBimoBfvX6FGvZ+Eigc2 jJ2XmS/PZ/HNPx4ii7FXd2nt6zoV5wgrosidOauOGcEYxDymoIXeBWzfp3Db6Z96Wwq5vqJKrax SecabzAEUdkMbvqg1A98J1a8dA2CME/JKYZLK8KRC4EKaejUn/uugzUlo4p1cEzKpGmfjn5AeYF +yIbXNh+Wn1nCteo3Dkku2Do09L3dCQhJ4bAk3THVDBx8jXZmVMdOYhQsKR+uPJANNWz5ypqJm3 FA/Kf+oDPM/OxAH8ErPVVsrC5eqXe6/ATgWN8ctWqPcojYBX4PtmeMOqhONtvba/3O3OJiam9Ut xeEaDhkJZOjsTXLdutmOLohE95HOpXLDX9H8OpV2Rge6EcnuehZ+le4enwuleQlCsg0fvhTSY5Z qgIZj9ReMa+c7vnTgTuDmXokD7iQPbBPtnk0ZM2J1XOO/KH+xJhXk/A0pmXq8qCG4mi/h/LpPTC /Z3mE2/fK/dAeENbM X-Received: by 2002:a05:6808:238d:b0:4b1:b037:da8b with SMTP id 5614622812f47-4b241b9d07fmr18056158b6e.11.1786924837907; Sun, 16 Aug 2026 17:00:37 -0700 (PDT) Received: from [127.0.1.1] (184-96-154-59.hlrn.qwest.net. [184.96.154.59]) by smtp.gmail.com with ESMTPSA id 5614622812f47-4b2714dc18asm2556802b6e.17.2026.08.16.17.00.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2026 17:00:37 -0700 (PDT) From: James Hilliard Date: Sun, 16 Aug 2026 18:00:29 -0600 Subject: [PATCH net-next v2 2/4] driver core: factor sync-state-only link cleanup 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: <20260816-submit-phy-package-fwdevlink-v1-v2-2-23e55dd59fad@gmail.com> References: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> In-Reply-To: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> To: Rob Herring , Saravana Kannan , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Andrew Lunn , Christian Marangi , "David S. Miller" , Heiner Kallweit , Russell King , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, driver-core@lists.linux.dev, netdev@vger.kernel.org, James Hilliard X-Mailer: b4 0.15.2 device_links_driver_bound() drops managed sync-state-only links after a consumer successfully probes, then re-evaluates each affected supplier for a sync_state() callback. Frameworks which populate child devices below a driverless device need to complete the same lifecycle step, but cannot rely on a successful driver probe to trigger it. Factor the existing cleanup into a lock-held helper and reuse it from device_links_driver_bound(). Add a public locking wrapper so frameworks which populate children below driverless devices can retire temporary fw_devlink proxy links without affecting real dependency or runtime-PM links. Signed-off-by: James Hilliard --- drivers/base/core.c | 74 ++++++++++++++++++++++++++++++++++++++--------= ---- include/linux/device.h | 1 + 2 files changed, 58 insertions(+), 17 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index 4d026682944f..627fcfa274f0 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -1305,6 +1305,57 @@ static void device_link_drop_managed(struct device_l= ink *link) kref_put(&link->kref, __device_link_del); } =20 +/* Caller must hold the device links write lock. */ +static void __device_links_drop_sync_state_only(struct device *dev, + struct list_head *sync_list) +{ + struct device_link *link, *ln; + + list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) { + struct device *supplier; + + if (!device_link_test(link, DL_FLAG_MANAGED) || + !device_link_test(link, DL_FLAG_SYNC_STATE_ONLY)) + continue; + + /* + * DL_FLAG_SYNC_STATE_ONLY excludes all other managed link flags, + * so it is safe to drop the managed link completely. + */ + supplier =3D link->supplier; + device_link_drop_managed(link); + + if (defer_sync_state_count) + __device_links_supplier_defer_sync(supplier); + else + __device_links_queue_sync_state(supplier, sync_list); + } +} + +/** + * device_links_drop_sync_state_only - Drop managed sync-state-only links + * @dev: Consumer device whose proxy links should be dropped + * + * Frameworks which populate child devices below a driverless device can c= all + * this after adding all of the children. The children will have acquired = their + * own links by then, so the temporary links which only prevent suppliers = from + * receiving sync_state() callbacks are no longer needed. + * + * Re-evaluate each affected supplier for a sync_state() callback after its + * link is dropped. + */ +void device_links_drop_sync_state_only(struct device *dev) +{ + LIST_HEAD(sync_list); + + device_links_write_lock(); + __device_links_drop_sync_state_only(dev, &sync_list); + device_links_write_unlock(); + + device_links_flush_sync_list(&sync_list, NULL); +} +EXPORT_SYMBOL_GPL(device_links_drop_sync_state_only); + static ssize_t waiting_for_supplier_show(struct device *dev, const struct device_attribute *attr, char *buf) @@ -1418,6 +1469,8 @@ void device_links_driver_bound(struct device *dev) else __device_links_queue_sync_state(dev, &sync_list); =20 + __device_links_drop_sync_state_only(dev, &sync_list); + list_for_each_entry_safe(link, ln, &dev->links.suppliers, c_node) { struct device *supplier; =20 @@ -1425,17 +1478,10 @@ void device_links_driver_bound(struct device *dev) continue; =20 supplier =3D link->supplier; - if (device_link_test(link, DL_FLAG_SYNC_STATE_ONLY)) { - /* - * When DL_FLAG_SYNC_STATE_ONLY is set, it means no - * other DL_MANAGED_LINK_FLAGS have been set. So, it's - * save to drop the managed link completely. - */ - device_link_drop_managed(link); - } else if (dev_is_best_effort(dev) && - device_link_test(link, DL_FLAG_INFERRED) && - link->status !=3D DL_STATE_CONSUMER_PROBE && - !dev_can_match(link->supplier)) { + if (dev_is_best_effort(dev) && + device_link_test(link, DL_FLAG_INFERRED) && + link->status !=3D DL_STATE_CONSUMER_PROBE && + !dev_can_match(link->supplier)) { /* * When dev_is_best_effort() is true, we ignore device * links to suppliers that don't have a driver. If the @@ -1449,12 +1495,6 @@ void device_links_driver_bound(struct device *dev) WRITE_ONCE(link->status, DL_STATE_ACTIVE); } =20 - /* - * This needs to be done even for the deleted - * DL_FLAG_SYNC_STATE_ONLY device link in case it was the last - * device link that was preventing the supplier from getting a - * sync_state() call. - */ if (defer_sync_state_count) __device_links_supplier_defer_sync(supplier); else diff --git a/include/linux/device.h b/include/linux/device.h index aee79fd6b32b..8afb9f2b0d82 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1381,6 +1381,7 @@ struct device_link *device_link_add(struct device *co= nsumer, struct device *supplier, u32 flags); void device_link_del(struct device_link *link); void device_link_remove(void *consumer, struct device *supplier); +void device_links_drop_sync_state_only(struct device *dev); void device_links_supplier_sync_state_pause(void); void device_links_supplier_sync_state_resume(void); void device_link_wait_removal(void); --=20 2.53.0 From nobody Mon Sep 28 21:52:20 2026 Received: from mail-oa1-f47.google.com (mail-oa1-f47.google.com [209.85.160.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 692533E44F6 for ; Mon, 17 Aug 2026 00:00:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924842; cv=none; b=OfzvtPS+IMT2JXvI8+Ntgii2rDDdFXJDayOqUfxbxH8IFn9ekHEa9a/qpOkeNNynvwCbbUqygZmLd44OegHWnULP/daCup/SwBVn9eF3qvxQHeaT2uhqkIUdaPUCCzk+xQCOa/NmMiYKXsJmqjsFJe7p0lOmVM7S0fwD8xucj1U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924842; c=relaxed/simple; bh=LS22LcmEJj8e3kqN7yGg2uzjNvP+oUDHt1HXDKQHKRw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mFDiQFAPLRBoXvu39Je4jA4/fIJ0o04EbIXPRqz4Bt5yfWBTo+S3j7phY7sSJajI9xI3CY+4SkxMp1RExwF2ANKWoBYCauVLalorhIpJY226DQmNnJkg2fDyhyo4krcVsp8KUGzLFNM2S8oPDhHzdrSiXhMrxkkGUjOaTqZRta4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nLkgRSgf; arc=none smtp.client-ip=209.85.160.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nLkgRSgf" Received: by mail-oa1-f47.google.com with SMTP id 586e51a60fabf-44cd237446cso1660546fac.1 for ; Sun, 16 Aug 2026 17:00:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786924839; x=1787529639; 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=yhr9mz2HpwDudTQs8av6vCMLVNHxqCHiSdPs5GamCT4=; b=nLkgRSgf5Bb6kUfn8dcHmpYI4d8N0GDLAeC7Dy0aWJrlA/NxYHFoqL6U7aGgIvPXDI IrQ04lspld8VengPH58ajHI1FG/KoXUesSP/kKexZP+y+EXLnBDBL1gLcFxOxWDlPx2N dF7JxF1qHOAik150kxEuirx3OI3fAy/kCt7SKNLLb04aR4frqJ5jCRU+goxl6kLygwns s8yjr8XmGfQ+IhRfOYmdimrx5IuPUJytiVs6XrujpHEg4jk272JJwttyAxjiYrnviED5 b4Aebv9L6EsoMuA7Kdr0M24uLduvFZ6vKKpzT2j7P9/Rr/1ngNa1tc74BeoaLKhnLyaz whJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786924839; x=1787529639; 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=yhr9mz2HpwDudTQs8av6vCMLVNHxqCHiSdPs5GamCT4=; b=ZjpIVMUE/mbLNPmgHGdz4KmXg27OPMLG6wFTZ3ij9HowJpzMyZRyVevtd52AS8P783 xTjJI5/+d+qZ0jb/8AG72lC8DB3G2hju3750eqTz5g5QOmS72pTEYSm6sXPZxDf09RMi +7bl6ebggQoVn8Vjxv3S+KQnjIIozzIdlBAbQA419PWDFJG1ZkMwgC+RwkmwPDckcmvI nNF3PxpHY8SyA90MA7Fq2/MXR5iMtaeR0vPYqDBTMBz08RgykbTaLgJ9nYC8PszA2Woe hovdUeiN6/rMyr0BcMjH1gIIQe5ARfiw3Iu7TtD0xYkESj9xJNhzvCzz3Z2P1z04lGKE wKIA== X-Forwarded-Encrypted: i=1; AHgh+RqMXlTXi6UL2ULk4yFOiDgNUGrG8haEDw+xSRn2YlkqmhAwaW11YIo6ZQ35ySK5z8QVBjMbvc2VjJ0EAm0=@vger.kernel.org X-Gm-Message-State: AOJu0Yy2fa2009HHkgLMXB1hJk8XcrCVWyzlG3B116HHc9nUSvYpg/pR QJfQqzBL3wooEIrW2VRQ2qpUbHgVU+2XEH6ND8dKMumicL+jvlmTJRz9 X-Gm-Gg: AR+sD104DrP4/l9ZmHrdkc9a8qt5pLGmZfVjxGpgCrNYWPRvc7qi7ZaRrNnwfpnZcGK BC7H0xh3o4wCIuMYZDjKdRHeU6woIsbbn3saAd/8aGFXWUoZTGNH+G4SMs1uvJik7+g8F4wYQ1u xtlP+yIRxeIj1dUtftFPP8dmKRvc7YW1cZBQzGRUUV7YNWaUagYA2zwQO4FSyEn8xf5nAuQ1clE XOUI8/KrKKAaiPYw7KpnTar3ZzdJoc1Y6bvpDaBR6phklWro16OoTKsoEcKS5VPPR5g8oSVLX2a SqkTcS141W4601I4AK4ui0G0TuUelKcWis+DiYgk6BqxtJnMvgvlhN+SqQ67508srZAMs3/3p+1 8JhYKD468+X+8n5JSAFlw6efe2wDFsSIgpiQ9NjwcGG26iWVxcfsX+v74bHf+rpYWme5HbOPhZ1 NE2U111fIga6gCGvwrqjH9HLvfyCFDtmiHS7jY//igxNp93xMpm4Ua5dpJqa0ApydPMYSF030BC cgqRqYuSljyXT9UUdHmCf0QaHaA8JyekWZQdN3SKK0tgghAqMPJiucsxwAUkWQS4MHgn4jmjuvQ 4bNRZCwkJrYBVi1IZFs4qu/xr4TdIO4AVeyE6i8PTodXgNwpxRbdR6Oi46JmY2c+yKvHZgV587C O2aEHlx446HJkgD7W X-Received: by 2002:a05:6808:1486:b0:48c:4c00:596a with SMTP id 5614622812f47-4b2414ef9ebmr23059139b6e.5.1786924839124; Sun, 16 Aug 2026 17:00:39 -0700 (PDT) Received: from [127.0.1.1] (184-96-154-59.hlrn.qwest.net. [184.96.154.59]) by smtp.gmail.com with ESMTPSA id 5614622812f47-4b2714dc18asm2556802b6e.17.2026.08.16.17.00.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2026 17:00:38 -0700 (PDT) From: James Hilliard Date: Sun, 16 Aug 2026 18:00:30 -0600 Subject: [PATCH net-next v2 3/4] of: property: link PHY package suppliers to member PHYs 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: <20260816-submit-phy-package-fwdevlink-v1-v2-3-23e55dd59fad@gmail.com> References: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> In-Reply-To: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> To: Rob Herring , Saravana Kannan , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Andrew Lunn , Christian Marangi , "David S. Miller" , Heiner Kallweit , Russell King , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, driver-core@lists.linux.dev, netdev@vger.kernel.org, James Hilliard X-Mailer: b4 0.15.2 Ethernet PHY package nodes describe shared resources for their member PHYs, but are not populated as struct devices. fw_devlink consequently represents the package dependencies with proxy links to the closest ancestor device. The MDIO bus is a class device without a driver, so such a proxy can remain available indefinitely and prevent a supplier from receiving its sync_state() callback even after every PHY has probed. Treat every enabled member PHY as a consumer of the common package suppliers. The links can then be converted to links for the real PHY devices and retired through their normal driver lifecycle. Fixes: 385ef48f4686 ("net: phy: add support for scanning PHY in PHY package= s nodes") Signed-off-by: James Hilliard --- drivers/of/property.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/of/property.c b/drivers/of/property.c index 38c0c7dc428a..d59bcb1f29de 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -1272,6 +1272,20 @@ static void of_link_to_phandle(struct device_node *c= on_np, tmp_np =3D of_get_next_parent(tmp_np); } =20 + /* + * An Ethernet PHY package node describes resources shared by its member + * PHYs, but is not populated as a struct device. Link every enabled + * member PHY to those suppliers so fw_devlink can use the real consumer + * devices instead of leaving a proxy link on the MDIO bus indefinitely. + */ + if (of_node_name_eq(con_np, "ethernet-phy-package")) { + for_each_available_child_of_node_scoped(con_np, child) + fwnode_link_add(of_fwnode_handle(child), + of_fwnode_handle(sup_np), flags); + + return; + } + fwnode_link_add(of_fwnode_handle(con_np), of_fwnode_handle(sup_np), flags= ); } =20 --=20 2.53.0 From nobody Mon Sep 28 21:52:20 2026 Received: from mail-ot1-f43.google.com (mail-ot1-f43.google.com [209.85.210.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D0AE23EB0E9 for ; Mon, 17 Aug 2026 00:00:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924844; cv=none; b=iQLqkL0ioqphVl/OIPvbBdipONiRbvfh06S/X13FYCRwZp4Ad6Kw0fHj1kgb22H9OjsDYQ46KCMpi1Ruy5vPD86XH8zYT22Aue5gHQJWbcBcR5r3iVWCuFCpo8hD3Zo5+hB9Ykrhg+wbjd58NUDTbt0Wi3E9hTvZHEKfHhhUMTs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786924844; c=relaxed/simple; bh=1LnCRgjE5GrtVilnDq6Mw+CJnt8OEZLKDembPlnG1UE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DVTJlgBv6Vl301OdyPcFgJ8EtnEp/tNhcUY2Hp847P6xep2SS+7H3LEkvTMBJm7ziuX+Zm+pT3poLbg5YydPsedDOWBO1aZeBPVy+lePkLK00Dg6z5HRH4E/p8AiRS1dFc4yw8L3+jlK0xwMhpivH7vxPUPTFjnan97moT6a8oA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HrS2rF5r; arc=none smtp.client-ip=209.85.210.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HrS2rF5r" Received: by mail-ot1-f43.google.com with SMTP id 46e09a7af769-7ee37dc91f5so1668950a34.3 for ; Sun, 16 Aug 2026 17:00:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786924841; x=1787529641; 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=Kbg4qcFK/mBxoYXCkGvYYK5TXUGZpjr2DCvrJZaXNS8=; b=HrS2rF5rGgGKj//WVctl2fbhNdq4klAxYjCwG6ILjiUP0GWlVkM0W2Kl7fyz5qtMWB GLlHxSUm9OxuV6hiKcC2wheLO5fTxzPdRuBsR3HpJG6v+ietX4SCRGwMM5M+yPdBcRi0 wY/zwv1tMq+1Bo3W/gLXevD/sP6xf6EkPYJ3/SDtgdovfMA0z1iduwR6YVz2rfqKOLDq SPG/J+W90mg6LhiRsCAK9+jmvAJX4xWkpnotqkeqPJMmTZ4J9N5BvrkLi/0ruAJZuQOV EqG08ViGHPe1WfAPpeqWjp8VYx7ltp6IAJSJOR0BTy1FIbEs0GJZCtdrAFFc6uh1s9VG jwkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786924841; x=1787529641; 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=Kbg4qcFK/mBxoYXCkGvYYK5TXUGZpjr2DCvrJZaXNS8=; b=nvwH/sgyExysOAyObZhlSWtwdHqE1B6bZAK2/LoGlLhnFzCLknoUln2yClUdRNs30d YBuqCDGXIS8HiFdNBFm5imsB2VOwcnJ3pKF2mS3t1rLAobGPb9lm3wsM7hV047b1lYwf 2SWDeYJ7yTopQMVvwAP4Lak/1JB3p5YfpnkKzxLOLBX/dz9j/jC4jsuifF0a5bS6a32c 7YeXByEWtWKKmLtHR8f8KYSvv9Xg/9RztNna3leVeaV5Wn8eJ6AuTFmNleAb8iqlBMBz N4O0Lm4HdcKDFxVfq+P3k19lhxHn8vuQPh5AvS5zLDNc+0OHS3Ms7dLZQC2RpoS7fcm6 qc+A== X-Forwarded-Encrypted: i=1; AHgh+RrKMulCPPMKjUxN+1PlcsNenlU3zacmSuKaDJQ4EGf9xw1lblg9uGMG6ik3CMdet+t7eq/19Xy/sfn3NZU=@vger.kernel.org X-Gm-Message-State: AOJu0Yxbe+x23FjTk7svV2gNYFbhx8xlKQFjxoUOAFZeUcxU8jSGeL8t OQSe+pNTFhUX7p29EHn9MvYdHURWcfyh2BMp0YtHTEBctpMXqYRQZcSz X-Gm-Gg: AR+sD11UE4YiUFCZlLsarZE74yn13uyZrIkgsdI9GgrA3uQVBGX1Ds2UXkqRHi6Zaxg 52896dZ9494YQPcF2qJ7+YrFtRFK0TbU79plFnHruWVCL0wJ4rJsXpVoW3fB5eu5HjyllJP3Tab 0xm7hWAn89KwNq9V9MOp96jVtv2gCk+zKbP08CCE/5ceZnk2ieOGkQ0cNpitckyEYGNWygpRD+k g9HPlpbluMqdrhkASO43y0xkf3lXapylFQcRvcaDnAqr0pkw+JwCZP15lpHCNZfJfXwd8k5xi8X vQOPbDEyzYAEv6D6IWg40pFlk3LpHLPFLXud3Fz99Sh2tu/jTQ4NC2HfzDw0HqdCe10oh+yau6x oiUTNztCehIw47AigyoQjwoGwPurKWsLjNoTiPlzQHPmzUXm3OhlqQnKcqJCqfUKhKF6EqJOZGx BHrHLHj4QXt8V/06H2VL6qp8ywDslb0bIJ+hSj11imGbqJcQkosq1GKxTPt1BT9E7sb0HA4bH3A DvGYbqyQ7f9mP6bJHkH/fDN3SmV0tmKNEUuY6gJA7R0HnIJrod8TzDLYSSRCQz7nDdJo1xOO7R7 Q35C9Lmfg2Xms5Wd65ecFOD2dHdXCj7TQZB4ys7MtFj6g+fSjIoW5tXF5h16XK3lKXMSL3QZNa1 JOdtu3QPByizligGx X-Received: by 2002:a05:6808:1916:b0:48f:c907:7a40 with SMTP id 5614622812f47-4b241e1499cmr17948145b6e.11.1786924840611; Sun, 16 Aug 2026 17:00:40 -0700 (PDT) Received: from [127.0.1.1] (184-96-154-59.hlrn.qwest.net. [184.96.154.59]) by smtp.gmail.com with ESMTPSA id 5614622812f47-4b2714dc18asm2556802b6e.17.2026.08.16.17.00.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Aug 2026 17:00:39 -0700 (PDT) From: James Hilliard Date: Sun, 16 Aug 2026 18:00:31 -0600 Subject: [PATCH net-next v2 4/4] net: mdio: release fw_devlink proxies after population 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: <20260816-submit-phy-package-fwdevlink-v1-v2-4-23e55dd59fad@gmail.com> References: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> In-Reply-To: <20260816-submit-phy-package-fwdevlink-v1-v2-0-23e55dd59fad@gmail.com> To: Rob Herring , Saravana Kannan , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Andrew Lunn , Christian Marangi , "David S. Miller" , Heiner Kallweit , Russell King , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, driver-core@lists.linux.dev, netdev@vger.kernel.org, James Hilliard X-Mailer: b4 0.15.2 fw_devlink creates sync-state-only links from the closest existing ancestor device to suppliers of child devices which have not been added yet. It normally drops those proxy links when the ancestor driver finishes probing. An MDIO bus is a driverless class device, so successful OF population never reaches that lifecycle point. Its proxy links can consequently remain forever and prevent suppliers from receiving sync_state() even after the real PHY devices have acquired and activated their own links. Call the driver-core cleanup helper after successful OF MDIO population. Only sync-state-only links are removed; the real PHY links continue to enforce dependency and runtime-PM ordering. Signed-off-by: James Hilliard --- drivers/net/mdio/of_mdio.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/mdio/of_mdio.c b/drivers/net/mdio/of_mdio.c index b8d298c04d3f..49f9b4062cf5 100644 --- a/drivers/net/mdio/of_mdio.c +++ b/drivers/net/mdio/of_mdio.c @@ -229,7 +229,7 @@ int __of_mdiobus_register(struct mii_bus *mdio, struct = device_node *np, goto unregister; =20 if (!scanphys) - return 0; + goto done; =20 /* auto scan for PHYs with empty reg property */ for_each_available_child_of_node(np, child) { @@ -261,6 +261,9 @@ int __of_mdiobus_register(struct mii_bus *mdio, struct = device_node *np, } } =20 +done: + device_links_drop_sync_state_only(&mdio->dev); + return 0; =20 put_unregister: --=20 2.53.0