From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org,
linux-stm32@st-md-mailman.stormreply.com,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
netdev@vger.kernel.org, Paolo Abeni <pabeni@redhat.com>,
Vinod Koul <vkoul@kernel.org>
Subject: Re: [PATCH net-next v2 00/14] net: stmmac: SerDes, PCS, BASE-X, and inband goodies
Date: Fri, 23 Jan 2026 21:32:21 +0000 [thread overview]
Message-ID: <aXPo5R1Q-qWG3r3l@shell.armlinux.org.uk> (raw)
In-Reply-To: <aXN5BFXMshnhwBQ7@oss.qualcomm.com>
On Fri, Jan 23, 2026 at 07:05:00PM +0530, Mohd Ayaan Anwar wrote:
> 4. Switching from 1G to 2.5G - similar issues + a NULL pointer
> dereference. I am checking on the reason for it.
For the NULL pointer dereference, this is a bit weird, and may help to
point towards the issue.
> [ 1235.996004] qcom-ethqos 23040000.ethernet eth1: phy link down 2500base-x/Unknown/Unknown/none/off/nolpi
> [ 1240.517716] qcom-ethqos 23040000.ethernet eth1: phy link up 2500base-x/2.5Gbps/Full/none/off/nolpi
> [ 1240.529470] qcom-ethqos 23040000.ethernet eth1: major config, requested phy/2500base-x
> [ 1240.537642] qcom-ethqos 23040000.ethernet eth1: interface 2500base-x inband modes: pcs=00 phy=00
> [ 1240.546702] qcom-ethqos 23040000.ethernet eth1: major config, active phy/outband/2500base-x
> [ 1240.555441] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
> [ 1240.880168] Code: d63f0020 f9400e60 b4000040 f900081f (f9000ad3)
This code line disassembles to:
0: d63f0020 blr x1
4: f9400e60 ldr x0, [x19, #24]
8: b4000040 cbz x0, 10 <.text+0x10>
c: f900081f str xzr, [x0, #16]
10: f9000ad3 str x19, [x22, #16]
which, after comparing with my disassembly, the blr x1 is the call to
pcs_disable() inside phylink_pcs_disable() in this code:
if (pcs_changed) {
phylink_pcs_disable(pl->pcs);
if (pl->pcs)
pl->pcs->phylink = NULL;
pcs->phylink = pl;
and the failing store is the one for that last line of C code - in
other words, pcs = NULL.
This means that mac_select_pcs() returned NULL when being asked
"which PCS should be used for 2500base-X" ?
This suggests that the SerDes detection of support for 2500BASE-X
isn't working, meaning that stmmac_mac_select_pcs() ends up returning
NULL, rather than &priv->integrated_pcs->pcs.
That would only happen if:
/* Only allow 2500Base-X if the SerDes has support. */
ret = dwmac_serdes_validate(priv, PHY_INTERFACE_MODE_2500BASEX);
if (ret == 0)
__set_bit(PHY_INTERFACE_MODE_2500BASEX,
spcs->pcs.supported_interfaces);
fails, meaning we don't set that interface mode for the PCS.
dwmac_serdes_validate() calls phy_validate() for PHY_MODE_ETHERNET
with the PHY interface mode as the sub mode.
Patch 3 adds the required methods to phy-qcom-sgmii-eth.c to allow
phy_validate() to indicate whether this is supported or not:
.validate = qcom_dwmac_sgmii_phy_validate,
and its implementation is:
int ret = qcom_dwmac_sgmii_phy_speed(mode, submode);
return ret < 0 ? ret : 0;
where qcom_dwmac_sgmii_phy_speed() is:
if (mode != PHY_MODE_ETHERNET)
return -EINVAL;
if (submode == PHY_INTERFACE_MODE_SGMII ||
submode == PHY_INTERFACE_MODE_1000BASEX)
return SPEED_1000;
if (submode == PHY_INTERFACE_MODE_2500BASEX)
return SPEED_2500;
return -EINVAL;
So, this should be returning a positive integer (SPEED_2500), which
should cause phy_validate(serdes, PHY_MODE_ETHERNET,
PHY_INTERFACE_MODE_2500BASEX, NULL) to return success (zero). That
should result in PHY_INTERFACE_MODE_2500BASEX being set in
spcs->pcs.supported_interfaces, and thus &priv->integrated_pcs->pcs
being returned for PHY_INTERFACE_MODE_2500BASEX.
Is the particular hardware you're running this oopsing test on not
using a SerDes PHY? If that's the case, how does it switch between
2.5Gbps and 1Gbps data rate on the SerDes?
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2026-01-23 21:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-23 9:52 [PATCH net-next v2 00/14] net: stmmac: SerDes, PCS, BASE-X, and inband goodies Russell King (Oracle)
2026-01-23 9:53 ` [PATCH net-next v2 01/14] net: stmmac: qcom-ethqos: remove mac_base Russell King (Oracle)
2026-01-27 12:06 ` Mohd Ayaan Anwar
2026-01-23 9:53 ` [PATCH net-next v2 02/14] net: stmmac: qcom-ethqos: convert to set_clk_tx_rate() method Russell King (Oracle)
2026-02-17 18:51 ` Mohd Ayaan Anwar
2026-01-23 9:53 ` [PATCH net-next v2 03/14] phy: qcom-sgmii-eth: add .set_mode() and .validate() methods Russell King (Oracle)
2026-01-23 9:53 ` [PATCH net-next v2 04/14] net: stmmac: wrap phylink's rx_clk_stop functions Russell King (Oracle)
2026-01-23 9:53 ` [PATCH net-next v2 05/14] net: stmmac: add stmmac core serdes support Russell King (Oracle)
2026-01-24 0:59 ` Vladimir Oltean
2026-01-23 9:53 ` [PATCH net-next v2 06/14] net: stmmac: qcom-ethqos: convert to dwmac generic SerDes support Russell King (Oracle)
2026-01-23 9:53 ` [PATCH net-next v2 07/14] net: stmmac: move most PCS register definitions to stmmac_pcs.c Russell King (Oracle)
2026-01-23 9:53 ` [PATCH net-next v2 08/14] net: stmmac: handle integrated PCS phy_intf_sel separately Russell King (Oracle)
2026-01-23 9:54 ` [PATCH net-next v2 09/14] net: stmmac: add BASE-X support to integrated PCS Russell King (Oracle)
2026-01-23 9:54 ` [PATCH net-next v2 10/14] net: stmmac: use integrated PCS for BASE-X modes Russell King (Oracle)
2026-01-23 9:54 ` [PATCH net-next v2 11/14] net: stmmac: add struct stmmac_pcs_info Russell King (Oracle)
2026-01-23 9:54 ` [PATCH net-next v2 12/14] net: stmmac: add support for reading inband SGMII status Russell King (Oracle)
2026-01-23 9:54 ` [PATCH net-next v2 13/14] net: stmmac: configure SGMII AN control according to phylink Russell King (Oracle)
2026-01-23 9:54 ` [PATCH net-next v2 14/14] net: stmmac: report PCS configuration changes Russell King (Oracle)
2026-01-23 9:56 ` [PATCH net-next v2 00/14] net: stmmac: SerDes, PCS, BASE-X, and inband goodies Russell King (Oracle)
2026-01-23 11:13 ` Russell King (Oracle)
2026-01-24 0:04 ` Vladimir Oltean
2026-01-24 0:16 ` Russell King (Oracle)
2026-01-23 13:35 ` Mohd Ayaan Anwar
2026-01-23 17:26 ` Russell King (Oracle)
2026-01-27 13:45 ` Mohd Ayaan Anwar
2026-01-23 21:32 ` Russell King (Oracle) [this message]
2026-01-27 14:57 ` Mohd Ayaan Anwar
2026-01-27 15:17 ` Andrew Lunn
2026-01-27 15:42 ` Russell King (Oracle)
2026-01-29 7:27 ` Mohd Ayaan Anwar
2026-01-29 22:00 ` Russell King (Oracle)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aXPo5R1Q-qWG3r3l@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=mohd.anwar@oss.qualcomm.com \
--cc=neil.armstrong@linaro.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox