[PATCH] drm/xe/pf: Don't advertise support to enable VFs if not ready

Piotr Piórkowski piotr.piorkowski at intel.com
Tue May 14 10:50:00 UTC 2024


Michal Wajdeczko <michal.wajdeczko at intel.com> wrote on wto [2024-maj-07 18:57:57 +0200]:
> Even if we have not enabled SR-IOV support using the platform
> specific has_sriov flag, the hardware may still report SR-IOV
> capability and the PCI layer may wrongly advertise driver support
> to enable VFs.  Explicitly reset the number of supported VFs to
> zero to avoid confusion.
> 
> Applications may read the /sys/bus/pci/devices/.../sriov_totalvfs
> prior to enabling VFs using the sriov_numvfs to check if such an
> operation is possible.
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_sriov.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_sriov.c b/drivers/gpu/drm/xe/xe_sriov.c
> index 1c3fa84b6adb..a274a5fb1401 100644
> --- a/drivers/gpu/drm/xe/xe_sriov.c
> +++ b/drivers/gpu/drm/xe/xe_sriov.c
> @@ -53,6 +53,7 @@ static bool test_is_vf(struct xe_device *xe)
>   */
>  void xe_sriov_probe_early(struct xe_device *xe)
>  {
> +	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
>  	enum xe_sriov_mode mode = XE_SRIOV_MODE_NONE;
>  	bool has_sriov = xe->info.has_sriov;
>  
> @@ -61,6 +62,16 @@ void xe_sriov_probe_early(struct xe_device *xe)
>  			mode = XE_SRIOV_MODE_VF;
>  		else if (xe_sriov_pf_readiness(xe))
>  			mode = XE_SRIOV_MODE_PF;
> +	} else if (pci_sriov_get_totalvfs(pdev)) {
> +		/*
> +		 * Even if we have not enabled SR-IOV support using the
> +		 * platform specific has_sriov flag, the hardware may still
> +		 * report SR-IOV capability and the PCI layer may wrongly
> +		 * advertise driver support to enable VFs. Explicitly reset
> +		 * the number of supported VFs to zero to avoid confusion.
> +		 */
> +		drm_info(&xe->drm, "Support for SR-IOV is not available\n");
> +		pci_sriov_set_totalvfs(pdev, 0);
>  	}
LGTM:
Reviewed-by: Piotr Piórkowski <piotr.piorkowski at intel.com>

>  
>  	xe_assert(xe, !xe->sriov.__mode);
> -- 
> 2.43.0
> 

-- 


More information about the Intel-xe mailing list