[PATCH 5/6] drm/xe/vf: Custom hardware config load step if VF

Piotr Piórkowski piotr.piorkowski at intel.com
Thu May 16 10:11:16 UTC 2024


Michal Wajdeczko <michal.wajdeczko at intel.com> wrote on nie [2024-maj-12 17:49:14 +0200]:
> The VF drivers may immediately communicate with the GuC to obtain
> the hardware config since the firmware shall already be running.
> 
> With the GuC communication established, VFs can also obtain the
> values of the runtime registers (fuses) from the PF driver.
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_guc.c | 36 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 0c9938e0ab8c..762fab403b86 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -19,6 +19,7 @@
>  #include "xe_force_wake.h"
>  #include "xe_gt.h"
>  #include "xe_gt_printk.h"
> +#include "xe_gt_sriov_vf.h"
>  #include "xe_guc_ads.h"
>  #include "xe_guc_ct.h"
>  #include "xe_guc_hwconfig.h"
> @@ -538,6 +539,38 @@ static int __xe_guc_upload(struct xe_guc *guc)
>  	return 0	/* FIXME: ret, don't want to stop load currently */;
>  }
>  
> +static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)
> +{
> +	struct xe_gt *gt = guc_to_gt(guc);
> +	int ret;
> +
> +	ret = xe_gt_sriov_vf_bootstrap(gt);
> +	if (ret)
> +		return ret;
> +
> +	ret = xe_gt_sriov_vf_query_config(gt);
> +	if (ret)
> +		return ret;
> +
> +	ret = xe_guc_hwconfig_init(guc);
> +	if (ret)
> +		return ret;
> +
> +	ret = xe_guc_enable_communication(guc);
> +	if (ret)
> +		return ret;
> +
> +	ret = xe_gt_sriov_vf_connect(gt);
> +	if (ret)
> +		return ret;
> +
> +	ret = xe_gt_sriov_vf_query_runtime(gt);
> +	if (ret)
> +		return ret;
> +
> +	return 0;
> +}
> +
>  /**
>   * xe_guc_min_load_for_hwconfig - load minimal GuC and read hwconfig table
>   * @guc: The GuC object
> @@ -553,6 +586,9 @@ int xe_guc_min_load_for_hwconfig(struct xe_guc *guc)
>  {
>  	int ret;
>  
> +	if (IS_SRIOV_VF(guc_to_xe(guc)))
> +		return vf_guc_min_load_for_hwconfig(guc);
> +
>  	xe_guc_ads_populate_minimal(&guc->ads);
>  
>  	/* Raise GT freq to speed up HuC/GuC load */

LGTM:
Reviewed-by: Piotr Piórkowski <piotr.piorkowski at intel.com>

> -- 
> 2.43.0
> 

-- 


More information about the Intel-xe mailing list