Normally phy_select_page() is only called from within the phy driver. The exception is the r8169 network driver. It calls phy_select_page() assuming that its internal phy is supported by the realtek phy driver which supports this operation. It can happen though that the internal phy is not yet supported by the realtek phy driver and thus support falls back to the generic phy driver. return gracefully in this case instead of crashing barebox. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/net/phy/phy-core.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c index ab52de35b5..b12f54ed38 100644 --- a/drivers/net/phy/phy-core.c +++ b/drivers/net/phy/phy-core.c @@ -27,6 +27,11 @@ static int phy_read_page(struct phy_device *phydev) { struct phy_driver *phydrv = to_phy_driver(phydev->dev.driver); + if (!phydrv->read_page) { + dev_warn_once(&phydev->dev, "read_page callback not available, PHY driver not loaded?\n"); + return -EOPNOTSUPP; + } + return phydrv->read_page(phydev); } @@ -34,6 +39,11 @@ static int phy_write_page(struct phy_device *phydev, int page) { struct phy_driver *phydrv = to_phy_driver(phydev->dev.driver); + if (!phydrv->write_page) { + dev_warn_once(&phydev->dev, "write_page callback not available, PHY driver not loaded?\n"); + return -EOPNOTSUPP; + } + return phydrv->write_page(phydev, page); } -- 2.39.2