[PATCH] drm/xe: Split GuC communication initialization

Matthew Brost matthew.brost at intel.com
Thu Jan 11 16:43:09 UTC 2024


On Thu, Jan 11, 2024 at 05:20:51PM +0100, Michal Wajdeczko wrote:
> Soon we will be trying to communicate with the GuC firmware very
> early during VF driver probe, before we finish normal init steps.
> Split GuC communication initialization code so the GuC MMIO based
> communication xe_guc_mmio_send() functions will work where needed.
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Matthew Brost <matthew.brost at intel.com>

Reviewed-by: Matthew Brost <matthew.brost at intel.com>

> ---
>  drivers/gpu/drm/xe/xe_guc.c | 21 +++++++++++++++++----
>  drivers/gpu/drm/xe/xe_guc.h |  1 +
>  2 files changed, 18 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 6e73ebf67251..0fd9b5efe4c2 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -243,6 +243,22 @@ static void guc_fini(struct drm_device *drm, void *arg)
>  	xe_force_wake_put(gt_to_fw(guc_to_gt(guc)), XE_FORCEWAKE_ALL);
>  }
>  
> +/**
> + * xe_guc_comm_init_early - early initialization of GuC communication
> + * @guc: the &xe_guc to initialize
> + *
> + * Must be called prior to first MMIO communication with GuC firmware.
> + */
> +void xe_guc_comm_init_early(struct xe_guc *guc)
> +{
> +	struct xe_gt *gt = guc_to_gt(guc);
> +
> +	if (xe_gt_is_media_type(gt))
> +		guc->notify_reg = MED_GUC_HOST_INTERRUPT;
> +	else
> +		guc->notify_reg = GUC_HOST_INTERRUPT;
> +}
> +
>  int xe_guc_init(struct xe_guc *guc)
>  {
>  	struct xe_device *xe = guc_to_xe(guc);
> @@ -283,10 +299,7 @@ int xe_guc_init(struct xe_guc *guc)
>  
>  	guc_init_params(guc);
>  
> -	if (xe_gt_is_media_type(gt))
> -		guc->notify_reg = MED_GUC_HOST_INTERRUPT;
> -	else
> -		guc->notify_reg = GUC_HOST_INTERRUPT;
> +	xe_guc_comm_init_early(guc);
>  
>  	xe_uc_fw_change_status(&guc->fw, XE_UC_FIRMWARE_LOADABLE);
>  
> diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
> index d3e49e7fd7c3..94f2dc5f6f90 100644
> --- a/drivers/gpu/drm/xe/xe_guc.h
> +++ b/drivers/gpu/drm/xe/xe_guc.h
> @@ -13,6 +13,7 @@
>  
>  struct drm_printer;
>  
> +void xe_guc_comm_init_early(struct xe_guc *guc);
>  int xe_guc_init(struct xe_guc *guc);
>  int xe_guc_init_post_hwconfig(struct xe_guc *guc);
>  int xe_guc_post_load_init(struct xe_guc *guc);
> 
> base-commit: 79184e72263e91528195db01783148435c7e4fad
> -- 
> 2.25.1
> 


More information about the Intel-xe mailing list