sfc: explain that "attached" VFs only refer to Xen
During SRIOV disabling it is checked wether any VF is currently attached to a guest, using pci_vfs_assigned function. However, this check only works with VFs attached with Xen, not with vfio/KVM. Added comments clarifying this point. Also, replaced manual check of PCI_DEV_FLAGS_ASSIGNED flag and used the helper function pci_is_dev_assigned instead. Signed-off-by: Íñigo Huguet <ihuguet@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
1ebe4feb8b
Коммит
9a022e7650
|
@ -1070,7 +1070,8 @@ static int efx_ef10_probe_vf(struct efx_nic *efx)
|
|||
|
||||
/* If the parent PF has no VF data structure, it doesn't know about this
|
||||
* VF so fail probe. The VF needs to be re-created. This can happen
|
||||
* if the PF driver is unloaded while the VF is assigned to a guest.
|
||||
* if the PF driver was unloaded while any VF was assigned to a guest
|
||||
* (using Xen, only).
|
||||
*/
|
||||
pci_dev_pf = efx->pci_dev->physfn;
|
||||
if (pci_dev_pf) {
|
||||
|
|
|
@ -122,8 +122,7 @@ static void efx_ef10_sriov_free_vf_vports(struct efx_nic *efx)
|
|||
struct ef10_vf *vf = nic_data->vf + i;
|
||||
|
||||
/* If VF is assigned, do not free the vport */
|
||||
if (vf->pci_dev &&
|
||||
vf->pci_dev->dev_flags & PCI_DEV_FLAGS_ASSIGNED)
|
||||
if (vf->pci_dev && pci_is_dev_assigned(vf->pci_dev))
|
||||
continue;
|
||||
|
||||
if (vf->vport_assigned) {
|
||||
|
@ -449,7 +448,9 @@ void efx_ef10_sriov_fini(struct efx_nic *efx)
|
|||
int rc;
|
||||
|
||||
if (!nic_data->vf) {
|
||||
/* Remove any un-assigned orphaned VFs */
|
||||
/* Remove any un-assigned orphaned VFs. This can happen if the PF driver
|
||||
* was unloaded while any VF was assigned to a guest (using Xen, only).
|
||||
*/
|
||||
if (pci_num_vf(efx->pci_dev) && !pci_vfs_assigned(efx->pci_dev))
|
||||
pci_disable_sriov(efx->pci_dev);
|
||||
return;
|
||||
|
|
Загрузка…
Ссылка в новой задаче