Intel-Wired-Lan Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [next PATCH S75-V2 01/12] i40evf: use netdev variable in reset task
@ 2017-06-29  8:36 Alice Michael
  2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 02/12] i40e: use cpumask_copy instead of direct assignment Alice Michael
                   ` (10 more replies)
  0 siblings, 11 replies; 18+ messages in thread
From: Alice Michael @ 2017-06-29  8:36 UTC (permalink / raw)
  To: intel-wired-lan

From: Alan Brady <alan.brady@intel.com>

If we're going to bother initializing a variable to reference it we might
as well use it.

Signed-off-by: Alan Brady <alan.brady@intel.com>
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 77d2835..ef55f71 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1879,7 +1879,7 @@ static void i40evf_reset_task(struct work_struct *work)
 	}
 
 continue_reset:
-	if (netif_running(adapter->netdev)) {
+	if (netif_running(netdev)) {
 		netif_carrier_off(netdev);
 		netif_tx_stop_all_queues(netdev);
 		adapter->link_up = false;
@@ -1947,7 +1947,7 @@ static void i40evf_reset_task(struct work_struct *work)
 	return;
 reset_err:
 	dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit\n");
-	i40evf_close(adapter->netdev);
+	i40evf_close(netdev);
 }
 
 /**
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread
* [Intel-wired-lan] [next PATCH S75-V2 01/12] i40evf: use netdev variable in reset task
@ 2017-07-11 12:01 Alice Michael
  2017-07-11 12:01 ` [Intel-wired-lan] [next PATCH S75-V2 04/12] i40e: synchronize nvmupdate command and adminq subtask Alice Michael
  0 siblings, 1 reply; 18+ messages in thread
From: Alice Michael @ 2017-07-11 12:01 UTC (permalink / raw)
  To: intel-wired-lan

From: Alan Brady <alan.brady@intel.com>

If we're going to bother initializing a variable to reference it we might
as well use it.

Signed-off-by: Alan Brady <alan.brady@intel.com>
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 77d2835..ef55f71 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1879,7 +1879,7 @@ static void i40evf_reset_task(struct work_struct *work)
 	}
 
 continue_reset:
-	if (netif_running(adapter->netdev)) {
+	if (netif_running(netdev)) {
 		netif_carrier_off(netdev);
 		netif_tx_stop_all_queues(netdev);
 		adapter->link_up = false;
@@ -1947,7 +1947,7 @@ static void i40evf_reset_task(struct work_struct *work)
 	return;
 reset_err:
 	dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit\n");
-	i40evf_close(adapter->netdev);
+	i40evf_close(netdev);
 }
 
 /**
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 18+ messages in thread
* [Intel-wired-lan] [next PATCH S75-V2 04/12] i40e: synchronize nvmupdate command and adminq subtask
@ 2017-07-13  0:37 Mogilappagari, Sudheer
  0 siblings, 0 replies; 18+ messages in thread
From: Mogilappagari, Sudheer @ 2017-07-13  0:37 UTC (permalink / raw)
  To: intel-wired-lan

Hello Shannon, 

I haven't measured how long the lock might be held. Need to check timestamps in
log files or measure time again to get an idea of how long the lock might get 
held. Will check and add comment in code about potential time mutex might be held. 

You are right. If hw->nvmupd_state is *_WAIT and if condition is true, then we 
wouldn't release the lock. Will fix this. Thank you for reviewing patch.

Regards
Sudheer
-----


> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at osuosl.org] On 
> Behalf Of Shannon Nelson
> Sent: Wednesday, July 12, 2017 8:28 AM
> To: intel-wired-lan at osuosl.org
> Subject: Re: [Intel-wired-lan] [next PATCH S75-V2 04/12] i40e: 
> synchronize nvmupdate command and adminq subtask
> 
> 
> 
> On 7/11/2017 5:01 AM, Alice Michael wrote:
> > From: Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
> >
> > During NVM update, state machine gets into unrecoverable state 
> > because i40e_clean_adminq_subtask can get scheduled after the admin 
> > queue command but before other state variables are updated. This 
> > causes incorrect input to i40e_nvmupd_check_wait_event and state 
> > transitions don't happen.
> >
> > This issue existed before but surfaced after commit 373149fc99a0
> > ("i40e: Decrease the scope of rtnl lock")
> 
> I had a feeling that patch might bite you.  I suspect there may still 
> be some other occasional timing issues cropping up.
> 
> >
> > This fix adds locking around admin queue command and update of state 
> > variables so that adminq_subtask will have accurate information 
> > whenever it gets scheduled.
> >
> > Signed-off-by: Sudheer Mogilappagari 
> > <sudheer.mogilappagari@intel.com>
> > ---
> >   drivers/net/ethernet/intel/i40e/i40e_nvm.c | 6 ++++++
> >   1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> > index 17607a2..04f2192 100644
> > --- a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> > +++ b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> > @@ -753,6 +753,11 @@ i40e_status i40e_nvmupd_command(struct
> i40e_hw *hw,
> >   		hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
> >   	}
> >
> > +	/* Acquire lock to prevent race condition where adminq_task
> > +	 * can execute after i40e_nvmupd_nvm_read/write but before state
> > +	 * variables (nvm_wait_opcode, nvm_release_on_done) are updated
> > +	 */
> > +	mutex_lock(&hw->aq.arq_mutex);
> 
> Have you done any testing to see how long you might end up holding 
> this lock?  I suppose it is limited by the max length of the 
> synchronous AQ polling timeout.  You might mention that maximum time 
> limitation here or in the commit notes, since this is a mutex over a 
> possibly long I/O operation.
> 
> >   	switch (hw->nvmupd_state) {
> >   	case I40E_NVMUPD_STATE_INIT:
> >   		status = i40e_nvmupd_state_init(hw, cmd, bytes, perrno); @@ 
> > -788,6 +793,7 @@ i40e_status i40e_nvmupd_command(struct
> i40e_hw *hw,
> 
> 
> There's a return statement in the *_WAIT cases that should have a 
> mutex_unlock(), or should have a goto to the unlock at the end of the 
> function, or you'll end up never again receiving AR events.
> 
> sln
> 
> >   		*perrno = -ESRCH;
> >   		break;
> >   	}
> > +	mutex_unlock(&hw->aq.arq_mutex);
> >   	return status;
> >   }
> >
> >
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at osuosl.org
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2017-07-13  0:37 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-29  8:36 [Intel-wired-lan] [next PATCH S75-V2 01/12] i40evf: use netdev variable in reset task Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 02/12] i40e: use cpumask_copy instead of direct assignment Alice Michael
2017-06-29 17:20   ` Keller, Jacob E
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 03/12] i40e: prevent changing ITR if adaptive-rx/tx enabled Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 04/12] i40e: synchronize nvmupdate command and adminq subtask Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 05/12] i40e: Store the requested FEC information Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 06/12] i40e: prevent snprintf format specifier truncation Alice Michael
2017-07-05 22:08   ` Shannon Nelson
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 07/12] i40e: Use correct flag to enable egress traffic for unicast promisc Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 08/12] i40evf: fix possible snprintf truncation of q_vector->name Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 09/12] i40e: force VMDQ device name truncation Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 10/12] i40e/i40evf: support for VF VLAN tag stripping control Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 11/12] i40e: 25G FEC status improvements Alice Michael
2017-06-29  8:36 ` [Intel-wired-lan] [next PATCH S75-V2 12/12] i40e: Add support for 'ethtool -m' Alice Michael
2017-07-05 22:22   ` Shannon Nelson
  -- strict thread matches above, loose matches on Subject: below --
2017-07-11 12:01 [Intel-wired-lan] [next PATCH S75-V2 01/12] i40evf: use netdev variable in reset task Alice Michael
2017-07-11 12:01 ` [Intel-wired-lan] [next PATCH S75-V2 04/12] i40e: synchronize nvmupdate command and adminq subtask Alice Michael
2017-07-12 15:28   ` Shannon Nelson
2017-07-13  0:37 Mogilappagari, Sudheer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox