net/fec_mpc52xx: Fix kernel panic on FEC error
authorJohn Bonesio <bones@secretlab.ca>
Wed, 14 Oct 2009 22:10:19 +0000 (15:10 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 14 Oct 2009 22:10:19 +0000 (15:10 -0700)
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>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/fec_mpc52xx.c

index c40113f58963f9f765268141db1d78f367125a8c..66dace6d324f307ae3474616c04ea2fdc373c811 100644 (file)
@@ -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);