Message ID | 1333638664-17062-2-git-send-email-bpoirier@suse.de |
---|---|
State | Awaiting Upstream, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 2012-04-05 at 11:11 -0400, Benjamin Poirier wrote: > Upon resume from standby, ixgbe may trigger the ASSERT_RTNL() in > netif_set_real_num_tx_queues(). The call stack is: > netif_set_real_num_tx_queues > ixgbe_set_num_queues > ixgbe_init_interrupt_scheme > ixgbe_resume > > Signed-off-by: Benjamin Poirier <bpoirier@suse.de> > > --- > Unlike patch 1 for igb, we cannot lock rtnl closer to the point where > netif_set_real_num_tx_queues() is called because > ixgbe_init_interrupt_scheme() > is also called by the dcb code, already under rtnl. > --- > drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) Thanks Benjamin, I will add the patch to my igb queue of patches.
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 3e26b1f..ff6edab 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -4836,7 +4836,9 @@ static int ixgbe_resume(struct pci_dev *pdev) pci_wake_from_d3(pdev, false); + rtnl_lock(); err = ixgbe_init_interrupt_scheme(adapter); + rtnl_unlock(); if (err) { e_dev_err("Cannot initialize interrupts for device\n"); return err;
Upon resume from standby, ixgbe may trigger the ASSERT_RTNL() in netif_set_real_num_tx_queues(). The call stack is: netif_set_real_num_tx_queues ixgbe_set_num_queues ixgbe_init_interrupt_scheme ixgbe_resume Signed-off-by: Benjamin Poirier <bpoirier@suse.de> --- Unlike patch 1 for igb, we cannot lock rtnl closer to the point where netif_set_real_num_tx_queues() is called because ixgbe_init_interrupt_scheme() is also called by the dcb code, already under rtnl. --- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)