Message ID | 20091014174224.29221.18830.stgit@angua |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Grant Likely wrote: > From: John Bonesio <bones@secretlab.ca> > > The MDIO bus cannot be accessed at interrupt context, but on an FEC > error, the fec_mpc52xx driver reset function also tries to reset the > PHY. Since the error is detected at IRQ context, and the PHY functions > try to sleep, the kernel ends up panicking. > > Resetting the PHY on an FEC error isn't even necessary. This patch > solves the problem by removing the PHY reset entirely. There is also no need to free and re-allocate the RX buffers in mpc52xx_fec_reset(). Wolfgang. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Oct 14, 2009 at 1:11 PM, Wolfgang Grandegger <wg@grandegger.com> wrote: > Grant Likely wrote: >> From: John Bonesio <bones@secretlab.ca> >> >> The MDIO bus cannot be accessed at interrupt context, but on an FEC >> error, the fec_mpc52xx driver reset function also tries to reset the >> PHY. Since the error is detected at IRQ context, and the PHY functions >> try to sleep, the kernel ends up panicking. >> >> Resetting the PHY on an FEC error isn't even necessary. This patch >> solves the problem by removing the PHY reset entirely. > > There is also no need to free and re-allocate the RX buffers in > mpc52xx_fec_reset(). Write and test a patch for me! :-) g.
From: Grant Likely <grant.likely@secretlab.ca> Date: Wed, 14 Oct 2009 11:43:43 -0600 > From: John Bonesio <bones@secretlab.ca> > > The MDIO bus cannot be accessed at interrupt context, but on an FEC > error, the fec_mpc52xx driver reset function also tries to reset the > PHY. Since the error is detected at IRQ context, and the PHY functions > try to sleep, the kernel ends up panicking. > > Resetting the PHY on an FEC error isn't even necessary. This patch > solves the problem by removing the PHY reset entirely. > > Signed-off-by: John Bonesio <bones@secretlab.ca> > Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c index c40113f..66dace6 100644 --- a/drivers/net/fec_mpc52xx.c +++ b/drivers/net/fec_mpc52xx.c @@ -759,12 +759,6 @@ static void mpc52xx_fec_reset(struct net_device *dev) mpc52xx_fec_hw_init(dev); - if (priv->phydev) { - phy_stop(priv->phydev); - phy_write(priv->phydev, MII_BMCR, BMCR_RESET); - phy_start(priv->phydev); - } - bcom_fec_rx_reset(priv->rx_dmatsk); bcom_fec_tx_reset(priv->tx_dmatsk);