mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-20 01:18:08 +07:00
i40e: stop VF rings
Explicitly stop the rings belonging to each VF when disabling SR-IOV. Even though the VFs were gone, and the associated VSIs were removed, the rings were not stopped, and in some circumstances the hardware would continue to access the memory formerly used by the rings, causing memory corruption or DMAR errors, both of which would lead to general malaise of the kernel. To relieve this condition, explicitly stop all the rings associated with each VF before releasing its resources. Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> Tested-by: Jim Young <james.m.young@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
f4f88c6d3b
commit
4443463852
@ -733,6 +733,11 @@ void i40e_free_vfs(struct i40e_pf *pf)
|
||||
while (test_and_set_bit(__I40E_VF_DISABLE, &pf->state))
|
||||
usleep_range(1000, 2000);
|
||||
|
||||
for (i = 0; i < pf->num_alloc_vfs; i++)
|
||||
if (test_bit(I40E_VF_STAT_INIT, &pf->vf[i].vf_states))
|
||||
i40e_vsi_control_rings(pf->vsi[pf->vf[i].lan_vsi_idx],
|
||||
false);
|
||||
|
||||
/* Disable IOV before freeing resources. This lets any VF drivers
|
||||
* running in the host get themselves cleaned up before we yank
|
||||
* the carpet out from underneath their feet.
|
||||
|
Loading…
Reference in New Issue
Block a user