]> git.baikalelectronics.ru Git - kernel.git/commit
i40e: Fix VF hang when reset is triggered on another VF
authorSylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
Mon, 24 Oct 2022 10:05:25 +0000 (03:05 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Nov 2022 14:56:56 +0000 (23:56 +0900)
commitf71e9d00574c399a8b7852e27c153d063122fbea
tree2051dda61518e4faf9e7788e4aaede4ecfa248bd
parent8c590f2f6bd3ce4b32b05863406aa4ab0097e501
i40e: Fix VF hang when reset is triggered on another VF

[ Upstream commit b534592be1b1003bc82cb16cc7777bb777f142ac ]

When a reset was triggered on one VF with i40e_reset_vf
global PF state __I40E_VF_DISABLE was set on a PF until
the reset finished. If immediately after triggering reset
on one VF there is a request to reset on another
it will cause a hang on VF side because VF will be notified
of incoming reset but the reset will never happen because
of this global state, we will get such error message:

[  +4.890195] iavf 0000:86:02.1: Never saw reset

and VF will hang waiting for the reset to be triggered.

Fix this by introducing new VF state I40E_VF_STATE_RESETTING
that will be set on a VF if it is currently resetting instead of
the global __I40E_VF_DISABLE PF state.

Fixes: 2d2646d6b78f ("i40e: add locking around VF reset")
Signed-off-by: Sylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://lore.kernel.org/r/20221024100526.1874914-2-jacob.e.keller@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h