[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