[Intel-xe] [PATCH 28/37] drm/xe: Don't use engine_mask until after hwconfig parse

Rodrigo Vivi rodrigo.vivi at intel.com
Tue Jan 31 18:51:04 UTC 2023


On Thu, Jan 12, 2023 at 05:25:29PM -0500, Rodrigo Vivi wrote:
> From: Matthew Brost <matthew.brost at intel.com>
> 
> The IRQ and MCR init used engine_mask before hwconfig parse (currently
> faked), move these steps after the hwconfig parse.
> 
> Signed-off-by: Matthew Brost <matthew.brost at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

> ---
>  drivers/gpu/drm/xe/xe_gt.c  |  7 +++++++
>  drivers/gpu/drm/xe/xe_irq.c | 34 +++++++++++++++++++---------------
>  drivers/gpu/drm/xe/xe_irq.h |  2 ++
>  3 files changed, 28 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index 6cea15725cae..75150077d62c 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -21,6 +21,7 @@
>  #include "xe_gt_sysfs.h"
>  #include "xe_gt_topology.h"
>  #include "xe_hw_fence.h"
> +#include "xe_irq.h"
>  #include "xe_lrc.h"
>  #include "xe_map.h"
>  #include "xe_migrate.h"
> @@ -449,6 +450,12 @@ static int gt_fw_domain_init(struct xe_gt *gt)
>  	if (err)
>  		goto err_force_wake;
>  
> +	/* Enables per hw engine IRQs */
> +	xe_gt_irq_postinstall(gt);
> +
> +	/* Rerun MCR init as we now have hw engine list */
> +	xe_gt_mcr_init(gt);
> +
>  	err = xe_hw_engines_init_early(gt);
>  	if (err)
>  		goto err_force_wake;
> diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c
> index edebe1817400..92fe6b38d735 100644
> --- a/drivers/gpu/drm/xe/xe_irq.c
> +++ b/drivers/gpu/drm/xe/xe_irq.c
> @@ -492,26 +492,32 @@ void xe_irq_reset(struct xe_device *xe)
>  #endif
>  }
>  
> -void xe_irq_postinstall(struct xe_device *xe)
> +void xe_gt_irq_postinstall(struct xe_gt *gt)
>  {
> -	struct xe_gt *gt;
> -	u8 id;
> +	struct xe_device *xe = gt_to_xe(gt);
>  
> -	for_each_gt(gt, xe, id) {
> -		if (GRAPHICS_VERx100(xe) >= 1210) {
> -			dg1_irq_postinstall(xe, gt);
> -		} else if (GRAPHICS_VER(xe) >= 11) {
> -			gen11_irq_postinstall(xe, gt);
> -		} else {
> -			drm_err(&xe->drm, "No interrupt postinstall hook");
> -		}
> -	}
> +	if (GRAPHICS_VERx100(xe) >= 1210)
> +		dg1_irq_postinstall(xe, gt);
> +	else if (GRAPHICS_VER(xe) >= 11)
> +		gen11_irq_postinstall(xe, gt);
> +	else
> +		drm_err(&xe->drm, "No interrupt postinstall hook");
>  
>  #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> -	gen11_display_irq_postinstall(xe);
> +	if (gt->info.id == XE_GT0)
> +		gen11_display_irq_postinstall(gt_to_xe(gt));
>  #endif
>  }
>  
> +static void xe_irq_postinstall(struct xe_device *xe)
> +{
> +	struct xe_gt *gt;
> +	u8 id;
> +
> +	for_each_gt(gt, xe, id)
> +		xe_gt_irq_postinstall(gt);
> +}
> +
>  static irq_handler_t xe_irq_handler(struct xe_device *xe)
>  {
>  	if (GRAPHICS_VERx100(xe) >= 1210) {
> @@ -566,8 +572,6 @@ int xe_irq_install(struct xe_device *xe)
>  	if (err)
>  		return err;
>  
> -	xe_irq_postinstall(xe);
> -
>  	return err;
>  }
>  
> diff --git a/drivers/gpu/drm/xe/xe_irq.h b/drivers/gpu/drm/xe/xe_irq.h
> index 7aee8d259353..34ecf22b32d3 100644
> --- a/drivers/gpu/drm/xe/xe_irq.h
> +++ b/drivers/gpu/drm/xe/xe_irq.h
> @@ -7,8 +7,10 @@
>  #define _XE_IRQ_H_
>  
>  struct xe_device;
> +struct xe_gt;
>  
>  int xe_irq_install(struct xe_device *xe);
> +void xe_gt_irq_postinstall(struct xe_gt *gt);
>  void xe_irq_shutdown(struct xe_device *xe);
>  void xe_irq_suspend(struct xe_device *xe);
>  void xe_irq_resume(struct xe_device *xe);
> -- 
> 2.38.1
> 


More information about the Intel-xe mailing list