[PATCH v3 2/4] drm/xe/vf: Boostrap all GTs immediately after MMIO init
Michal Wajdeczko
michal.wajdeczko at intel.com
Wed Jun 4 08:31:41 UTC 2025
On 04.06.2025 01:54, Daniele Ceraolo Spurio wrote:
> Currently we perform the bootstrap for the primary GT early on during
> device init, while the media GT bootstrap happens when we try and fetch
> the hwconfig table. For consistency, move the bootstrap of the media GT
> happen at the same time as the primary GT, so that all the subsequent
> code can rely on both GTs being in the same state.
>
> v2: Also drop config query from min_guc_load since we now do it
> early (Michal)
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 11 ++++++-----
> drivers/gpu/drm/xe/xe_guc.c | 8 --------
> 2 files changed, 6 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 660b0c5126dc..7e87344943cd 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -798,18 +798,19 @@ int xe_device_probe(struct xe_device *xe)
> * be performed.
> */
> xe_gt_mmio_init(gt);
> - }
>
> - for_each_tile(tile, xe, id) {
> if (IS_SRIOV_VF(xe)) {
> - xe_guc_comm_init_early(&tile->primary_gt->uc.guc);
> - err = xe_gt_sriov_vf_bootstrap(tile->primary_gt);
> + xe_guc_comm_init_early(>->uc.guc);
> + err = xe_gt_sriov_vf_bootstrap(gt);
> if (err)
> return err;
> - err = xe_gt_sriov_vf_query_config(tile->primary_gt);
> + err = xe_gt_sriov_vf_query_config(gt);
> if (err)
> return err;
> }
> + }
> +
> + for_each_tile(tile, xe, id) {
> err = xe_ggtt_init_early(tile->mem.ggtt);
> if (err)
> return err;
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 52453845d1bd..209e5d53c290 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1102,14 +1102,6 @@ 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;
More information about the Intel-xe
mailing list