All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] Incorrect Date: fields with Intel patch submissions (was: [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's)
  2021-02-18 11:15 [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's Eryk Rybak
@ 2021-02-18  9:43 ` Paul Menzel
  2021-03-18  9:18 ` [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's Jankowski, Konrad0
  1 sibling, 0 replies; 3+ messages in thread
From: Paul Menzel @ 2021-02-18  9:43 UTC (permalink / raw)
  To: intel-wired-lan

Dear Eryk, dear Intel folks,


It?s now the happened again, that Intel patches have timestamps from the 
future, messing up the ordering for people sorting their inbox according 
to the date.

I mentioned it several times, but it keeps happening. Could you please 
get to the bottom of that problem in your infrastructure and fix it?


Kind regards,

Paul

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

* [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's
@ 2021-02-18 11:15 Eryk Rybak
  2021-02-18  9:43 ` [Intel-wired-lan] Incorrect Date: fields with Intel patch submissions (was: [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's) Paul Menzel
  2021-03-18  9:18 ` [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's Jankowski, Konrad0
  0 siblings, 2 replies; 3+ messages in thread
From: Eryk Rybak @ 2021-02-18 11:15 UTC (permalink / raw)
  To: intel-wired-lan

Fix the reason of kernel oops when i40e driver removed VFs.
Added new __I40E_VFS_RELEASING state to signalize releasing
process by PF, that it makes possible to exit of reset VF procedure.
Without this patch, it is possible to suspend the VFs reset by
releasing VFs resources procedure. Retrying the reset after the
timeout works on the freed VF memory causing a kernel oops.

Fixes: d43d60e5eb95("i40e: ensure reset occurs when disabling VF")
Signed-off-by: Eryk Rybak <eryk.roch.rybak@intel.com>
Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e.h             | 1 +
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 118473d..fe12587 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -142,6 +142,7 @@ enum i40e_state_t {
 	__I40E_VIRTCHNL_OP_PENDING,
 	__I40E_RECOVERY_MODE,
 	__I40E_VF_RESETS_DISABLED,	/* disable resets during i40e_remove */
+	__I40E_VFS_RELEASING,
 	/* This must be last as it determines the size of the BITMAP */
 	__I40E_STATE_SIZE__,
 };
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 1b6ec9b..0c6cbe9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -137,6 +137,7 @@ void i40e_vc_notify_vf_reset(struct i40e_vf *vf)
  **/
 static inline void i40e_vc_disable_vf(struct i40e_vf *vf)
 {
+	struct i40e_pf *pf = vf->pf;
 	int i;
 
 	i40e_vc_notify_vf_reset(vf);
@@ -147,6 +148,11 @@ static inline void i40e_vc_disable_vf(struct i40e_vf *vf)
 	 * ensure a reset.
 	 */
 	for (i = 0; i < 20; i++) {
+		/* If pf is in vfs releasing state reset vf is impossible,
+		 * so leave it.
+		 */
+		if (test_bit(__I40E_VFS_RELEASING, pf->state))
+			return;
 		if (i40e_reset_vf(vf, false))
 			return;
 		usleep_range(10000, 20000);
@@ -1574,6 +1580,8 @@ void i40e_free_vfs(struct i40e_pf *pf)
 
 	if (!pf->vf)
 		return;
+
+	set_bit(__I40E_VFS_RELEASING, pf->state);
 	while (test_and_set_bit(__I40E_VF_DISABLE, pf->state))
 		usleep_range(1000, 2000);
 
@@ -1631,6 +1639,7 @@ void i40e_free_vfs(struct i40e_pf *pf)
 		}
 	}
 	clear_bit(__I40E_VF_DISABLE, pf->state);
+	clear_bit(__I40E_VFS_RELEASING, pf->state);
 }
 
 #ifdef CONFIG_PCI_IOV

base-commit: e4b62cf7559f2ef9a022de235e5a09a8d7ded520
-- 
2.20.1


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

* [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's
  2021-02-18 11:15 [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's Eryk Rybak
  2021-02-18  9:43 ` [Intel-wired-lan] Incorrect Date: fields with Intel patch submissions (was: [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's) Paul Menzel
@ 2021-03-18  9:18 ` Jankowski, Konrad0
  1 sibling, 0 replies; 3+ messages in thread
From: Jankowski, Konrad0 @ 2021-03-18  9:18 UTC (permalink / raw)
  To: intel-wired-lan



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Eryk Rybak
> Sent: czwartek, 18 lutego 2021 12:15
> To: intel-wired-lan at lists.osuosl.org
> Cc: Rybak, Eryk Roch <eryk.roch.rybak@intel.com>; Loktionov, Aleksandr
> <aleksandr.loktionov@intel.com>
> Subject: [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver
> removes VF's
> 
> Fix the reason of kernel oops when i40e driver removed VFs.
> Added new __I40E_VFS_RELEASING state to signalize releasing process by
> PF, that it makes possible to exit of reset VF procedure.
> Without this patch, it is possible to suspend the VFs reset by releasing VFs
> resources procedure. Retrying the reset after the timeout works on the
> freed VF memory causing a kernel oops.
> 
> Fixes: d43d60e5eb95("i40e: ensure reset occurs when disabling VF")
> Signed-off-by: Eryk Rybak <eryk.roch.rybak@intel.com>
> Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h             | 1 +
>  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 9 +++++++++
>  2 files changed, 10 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e.h
> b/drivers/net/ethernet/intel/i40e/i40e.h
> index 118473d..fe12587 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e.h
> +++ b/drivers/net/ethernet/intel/i40e/i40e.h
> @@ -142,6 +142,7 @@ enum i40e_state_t {
>  	__I40E_VIRTCHNL_OP_PENDING,
>  	__I40E_RECOVERY_MODE,
>  	__I40E_VF_RESETS_DISABLED,	/* disable resets during i40e_remove
> */
> +	__I40E_VFS_RELEASING,
>  	/* This must be last as it determines the size of the BITMAP */
>  	__I40E_STATE_SIZE__,
>  };
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> index 1b6ec9b..0c6cbe9 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> @@ -137,6 +137,7 @@ void i40e_vc_notify_vf_reset(struct i40e_vf *vf)
>   **/
>  static inline void i40e_vc_disable_vf(struct i40e_vf *vf)  {
> +	struct i40e_pf *pf = vf->pf;
>  	int i;
> 
>  	i40e_vc_notify_vf_reset(vf);
> @@ -147,6 +148,11 @@ static inline void i40e_vc_disable_vf(struct i40e_vf
> *vf)
>  	 * ensure a reset.
>  	 */
>  	for (i = 0; i < 20; i++) {
> +		/* If pf is in vfs releasing state reset vf is impossible,
> +		 * so leave it.
> +		 */
> +		if (test_bit(__I40E_VFS_RELEASING, pf->state))
> +			return;
>  		if (i40e_reset_vf(vf, false))
>  			return;
>  		usleep_range(10000, 20000);
> @@ -1574,6 +1580,8 @@ void i40e_free_vfs(struct i40e_pf *pf)
> 
>  	if (!pf->vf)
>  		return;
> +
> +	set_bit(__I40E_VFS_RELEASING, pf->state);
>  	while (test_and_set_bit(__I40E_VF_DISABLE, pf->state))
>  		usleep_range(1000, 2000);
> 
> @@ -1631,6 +1639,7 @@ void i40e_free_vfs(struct i40e_pf *pf)
>  		}
>  	}
>  	clear_bit(__I40E_VF_DISABLE, pf->state);
> +	clear_bit(__I40E_VFS_RELEASING, pf->state);
>  }
> 
>  #ifdef CONFIG_PCI_IOV
> 
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>

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

end of thread, other threads:[~2021-03-18  9:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-18 11:15 [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's Eryk Rybak
2021-02-18  9:43 ` [Intel-wired-lan] Incorrect Date: fields with Intel patch submissions (was: [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's) Paul Menzel
2021-03-18  9:18 ` [Intel-wired-lan] [PATCH net] i40e: Fix kernel oops when i40e driver removes VF's Jankowski, Konrad0

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.