Message ID | 20230522111748.65089-5-kamil.maziarz@intel.com |
---|---|
State | Changes Requested |
Headers | show |
Series | iavf: fix reset task deadlock | expand |
On 5/22/2023 4:17 AM, Kamil Maziarz wrote: > From: Marcin Szycik <marcin.szycik@linux.intel.com> > > This reverts commit 08f1c147b7265245d67321585c68a27e990e0c4b. > > Netdev is no longer being detached during reset, so this fix can be > reverted. > > Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com> > Signed-off-by: Kamil Maziarz <kamil.maziarz@intel.com> > --- > v1->v8: no changes > --- > drivers/net/ethernet/intel/iavf/iavf_main.c | 16 +--------------- > 1 file changed, 1 insertion(+), 15 deletions(-) > > diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c > index 3d439f9ac97b..771463e53135 100644 > --- a/drivers/net/ethernet/intel/iavf/iavf_main.c > +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c > @@ -2986,6 +2986,7 @@ static void iavf_disable_vf(struct iavf_adapter *adapter) > iavf_free_queues(adapter); > memset(adapter->vf_res, 0, IAVF_VIRTCHNL_VF_RESOURCE_SIZE); > iavf_shutdown_adminq(&adapter->hw); > + adapter->netdev->flags &= ~IFF_UP; This has not been addressed: https://lore.kernel.org/intel-wired-lan/e6e668ac-8175-ea5c-25c2-65bcfa60eca6@intel.com/ > adapter->flags &= ~IAVF_FLAG_RESET_PENDING; > iavf_change_state(adapter, __IAVF_DOWN); > wake_up(&adapter->down_waitqueue);
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index 3d439f9ac97b..771463e53135 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -2986,6 +2986,7 @@ static void iavf_disable_vf(struct iavf_adapter *adapter) iavf_free_queues(adapter); memset(adapter->vf_res, 0, IAVF_VIRTCHNL_VF_RESOURCE_SIZE); iavf_shutdown_adminq(&adapter->hw); + adapter->netdev->flags &= ~IFF_UP; adapter->flags &= ~IAVF_FLAG_RESET_PENDING; iavf_change_state(adapter, __IAVF_DOWN); wake_up(&adapter->down_waitqueue); @@ -3080,11 +3081,6 @@ static void iavf_reset_task(struct work_struct *work) iavf_disable_vf(adapter); mutex_unlock(&adapter->client_lock); mutex_unlock(&adapter->crit_lock); - if (netif_running(netdev)) { - rtnl_lock(); - dev_close(netdev); - rtnl_unlock(); - } return; /* Do not attempt to reinit. It's dead, Jim. */ } @@ -3235,16 +3231,6 @@ static void iavf_reset_task(struct work_struct *work) mutex_unlock(&adapter->client_lock); mutex_unlock(&adapter->crit_lock); - - if (netif_running(netdev)) { - /* Close device to ensure that Tx queues will not be started - * during netif_device_attach() at the end of the reset task. - */ - rtnl_lock(); - dev_close(netdev); - rtnl_unlock(); - } - dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit\n"); }