From nobody Mon Jun 15 13:57:38 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 C4CF1385508 for ; Sat, 11 Apr 2026 14:30:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775917804; cv=none; b=QBVsQ2c4L+2GB9mormSfHNBHR1JDIgumWdW2GdGL0l8R+xsLtEX7awnYGoMsy54jIto8oNF6HVAaG/YQfbhhRC2anQy6Z4mJz+zsfdsS25atxbyFmzrYt9qeRwTV0cuK8MGHsWpuQwQxtVGBWecajIfzDv5+Brh5GzVh3wo/UUg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775917804; c=relaxed/simple; bh=I7otHS2UuBibAyk7ztbchnygQDdAGqIo613LgXlwUo0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=IriwlTzPK2wToUXUfsrYmQw+1y+E8ygCw7GxQPIIMuLovhFy3QYYQgIvvagt11POqcMrWinagMA+tIjatmMU0t+rLeEeqUmBr3vTKiGCFfa0qxAoiFfC/lY/7aN2LSQD8bdI8w/qK39WfNEf6lfV+t7jHrR862T9WSO8USrH5iE= 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=ZczkzRqQ; arc=none smtp.client-ip=209.85.221.44 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="ZczkzRqQ" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-43cfce3a195so1853076f8f.2 for ; Sat, 11 Apr 2026 07:30:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775917799; x=1776522599; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=TfsfBk1yzNdC/+yEaYnXqko1EBtHRLDfqU2U7CZrU+k=; b=ZczkzRqQMKa1cCeHcr4QKh4IVLcWKs8b5c2UnZZzW6TM6tGTlNQmYJx2XgQCpJS1dA WXKduUoOWttSIlwYkkH7+xXbix55QMltQbxqKyuxYNVW19HznOTENe+qhoYKWwRIciyw P2bbf+YT2fztRbnS4nHUNaZG6Qd3nMAKCHQvChTADn6bfIu4IxdeePGF+tsWjUx9FcNh 0Yg18GxDw/l11N11ztP7sMZRC3ABhf3LkHoVQIkOUuop/vIcDdoDqjEj4DX8N3VGwSig ZDK3rIPNos6LEHAT9Gk6nceZLHAk69ywMvIV+mKMAvppzHX35HhY7qR2DFcQei8g12A+ eKcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775917799; x=1776522599; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=TfsfBk1yzNdC/+yEaYnXqko1EBtHRLDfqU2U7CZrU+k=; b=tESt0CRZZ/zCrfNBSYHJGI+atNxcafT5hHVJOoxW3EV06nNOaUzdiTt342Y9T7ezkn LkIL8YmjrktNA3BnLpnf2rQoRzOa75vj/CwM142qrUhxaQx+PgZXRzEneBaMnFHsoPwT JaRjLoLuXvRrX37sE8zM7AMC5j2jzDuZSmF6tFk3S9LgXEZ8URvQ7/3fCxg/RmP2BjVB FNBAFC37tB1ytreG5Fv4VAc5xGjiechXmGN/ke9VV6AZrp8TK3s/AHJ5DH7eAtbRbi7C eBbII2maPh33YM8z+fcfmm/WB67o18vsOsTpEDBeZCWZfq5fSYRG9D5aTbp+pEnAT2TX U10Q== X-Forwarded-Encrypted: i=1; AJvYcCVHJgLGx/uuBwWg8JHbPoVggnx2gLFP88KqM4c8MyTbQ8k9WS+Ka0ZPIOtD/0hibStnbBzhvD1mz/sZASo=@vger.kernel.org X-Gm-Message-State: AOJu0YzfrOIhi3bWUMXyZKBhYSVG09wGTOAJ3jHQZVg/KNpfr1T5hI3E ubUiC6SxCRGknf3xjFSTsChfjBzY2CBdYtdsXt0MLhRWH9L3dPER9ZCn X-Gm-Gg: AeBDiev4N/+S192zbfZmTt0F59BS1vvJo303K6BEU9eAxAJFvv4o79V+bkqvU7ZYpHz hoBP1VRRjn00Vc1cQqBxIeqJHEWkzt0zoOKc742AOIhr+buAM/EudMUmtYFajdEfpNhRvSoU/F0 0/lZzy/7e+5GAGhGLz5zHBiNPDzHdaK7cu9pNk/70TcDueUBqeIyUGyIO27BdstSt922MKmN04t VUZzmoEHa9Sztc9myxk51IGo1rLA2PNRsUb5LHTJSBUEqloLVU5/9F40sH2AFMN9N1dde5i5+iI 8p7wsZsJK/E04Fd4ZcmG/Fwt2lUp7MfbpNfd5LOUm40HeAceufWuHu1IdBS0fF6KpIzEF74aIqK Ktl/sNNdFdOqaFmoj6ZrvMNVqbcZluHEfttQEEGZCs8jM51jao+qibI9RYpT30HJM9zfpB0w85x CmMChK0q5szGMNgSYyIUkKKBHVuwwpF1I= X-Received: by 2002:a05:600c:314b:b0:488:b241:2c5f with SMTP id 5b1f17b1804b1-488d687c076mr80986065e9.26.1775917798783; Sat, 11 Apr 2026 07:29:58 -0700 (PDT) Received: from biju.lan ([2a00:23c4:a758:8a01:1ef3:1f1e:3a7e:32e7]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d58a414bsm151270785e9.4.2026.04.11.07.29.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Apr 2026 07:29:58 -0700 (PDT) From: Biju X-Google-Original-From: Biju To: Andrew Lunn , Heiner Kallweit , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Biju Das , Russell King , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven , Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org, Ovidiu Panait Subject: [PATCH net-next v2] net: phy: call phy_init_hw() in phy resume path Date: Sat, 11 Apr 2026 15:29:53 +0100 Message-ID: <20260411142956.88343-1-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Biju Das When mac_managed_pm flag is set, mdio_bus_phy_resume() is skipped, so phy_init_hw(), which performs soft_reset and config_init, is not called during resume. This is inconsistent with the non-mac_managed_pm path, where mdio_bus_phy_resume() calls phy_init_hw() before phy_resume() on every resume. To align both paths, move the phy_init_hw() call into phy_resume() itself, before invoking the driver's resume callback. This ensures PHY soft reset and re-initialization happen unconditionally, regardless of whether PM is managed by the MAC or the MDIO bus. As a result, drop the redundant phy_init_hw() call in mdio_bus_phy_resume(). Additionally, in phy_attach_direct(), replace the separate phy_init_hw() and phy_resume() calls with a single phy_resume() call, since phy_init_hw() is now handled inside phy_resume(). Signed-off-by: Ovidiu Panait Signed-off-by: Biju Das --- v1->v2: * Updated commit description. * phy_init_hw() is moved from __phy_resume() -> phy_resume() to make it lock-free. * Dropped redundant phy_init_hw() call from mdio_bus_phy_resume() and phy_attach_direct(). --- drivers/net/phy/phy_device.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 0edff47478c2..4a2b19d39373 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -396,10 +396,6 @@ static __maybe_unused int mdio_bus_phy_resume(struct d= evice *dev) WARN_ON(phydev->state !=3D PHY_HALTED && phydev->state !=3D PHY_READY && phydev->state !=3D PHY_UP); =20 - ret =3D phy_init_hw(phydev); - if (ret < 0) - return ret; - ret =3D phy_resume(phydev); if (ret < 0) return ret; @@ -1857,16 +1853,14 @@ int phy_attach_direct(struct net_device *dev, struc= t phy_device *phydev, if (dev) netif_carrier_off(phydev->attached_dev); =20 - /* Do initial configuration here, now that + /* Do initial configuration inside phy_init_hw(), now that * we have certain key parameters * (dev_flags and interface) */ - err =3D phy_init_hw(phydev); + err =3D phy_resume(phydev); if (err) goto error; =20 - phy_resume(phydev); - /** * If the external phy used by current mac interface is managed by * another mac interface, so we should create a device link between @@ -2020,6 +2014,10 @@ int phy_resume(struct phy_device *phydev) { int ret; =20 + ret =3D phy_init_hw(phydev); + if (ret) + return ret; + mutex_lock(&phydev->lock); ret =3D __phy_resume(phydev); mutex_unlock(&phydev->lock); --=20 2.43.0