[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