Message ID | 20100113114847.23119.36954.stgit@localhost.localdomain |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Date: Wed, 13 Jan 2010 03:49:13 -0800 > From: Alexander Duyck <alexander.h.duyck@intel.com> > > This patch resolves issues seen when running netconsole and rebooting via > reboot -f. The issue was due to the fact that we were attempting to > perform interrupt actions when the q_vectors and rings had already been > freed via the ixgbe_shutdown routines. > > Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> > Acked-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@intel.com> > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Applied. There has to be a better way to handle this, though. In fact I would expect the device to be detached early enough (and thus ->netpoll() calls prevented) long before you would be freeing up resources and shutting down the chip. Why doesn't that happen? -- 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/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 2ad754c..3859767 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c @@ -5576,6 +5576,10 @@ static void ixgbe_netpoll(struct net_device *netdev) struct ixgbe_adapter *adapter = netdev_priv(netdev); int i; + /* if interface is down do nothing */ + if (test_bit(__IXGBE_DOWN, &adapter->state)) + return; + adapter->flags |= IXGBE_FLAG_IN_NETPOLL; if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) { int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;