[Intel-xe] [PATCH 1/1] fixup! drm/xe/gsc: add gsc device support
Daniele Ceraolo Spurio
daniele.ceraolospurio at intel.com
Mon Oct 23 21:53:29 UTC 2023
2 fixes:
1) The gsc_mask variable is not set in all branches, but it is always
evaluated in an if condition, so we need to initialize it to a valid
value
2) On MTL+ the GSC interrupts come from the engine, so we can't
unconditionally call the handler for the GSCFI interface and we
instead need to check if we're on a platform that does have a GSCFI.
While at it, move the GSCFI irq function call to where the other
non-engine OTHER_CLASS interrupts are handled.
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
Cc: Vitaly Lubart <vitaly.lubart at intel.com>
Cc: Alexander Usyskin <alexander.usyskin at intel.com>
---
drivers/gpu/drm/xe/xe_irq.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c
index 61350ed32c61..21d5273d7e61 100644
--- a/drivers/gpu/drm/xe/xe_irq.c
+++ b/drivers/gpu/drm/xe/xe_irq.c
@@ -142,7 +142,7 @@ void xe_irq_enable_hwe(struct xe_gt *gt)
struct xe_device *xe = gt_to_xe(gt);
u32 ccs_mask, bcs_mask;
u32 irqs, dmask, smask;
- u32 gsc_mask;
+ u32 gsc_mask = 0;
if (xe_device_uc_enabled(xe)) {
irqs = GT_RENDER_USER_INTERRUPT |
@@ -303,11 +303,6 @@ static void gt_irq_handler(struct xe_tile *tile,
instance = INTR_ENGINE_INSTANCE(identity[bit]);
intr_vec = INTR_ENGINE_INTR(identity[bit]);
- if (class == XE_ENGINE_CLASS_OTHER && instance == OTHER_GSC_INSTANCE) {
- xe_heci_gsc_irq_handler(xe, intr_vec);
- continue;
- }
-
engine_gt = pick_engine_gt(tile, class, instance);
hwe = xe_gt_hw_engine(engine_gt, class, instance, false);
@@ -317,7 +312,11 @@ static void gt_irq_handler(struct xe_tile *tile,
}
if (class == XE_ENGINE_CLASS_OTHER) {
- gt_other_irq_handler(engine_gt, instance, intr_vec);
+ /* HECI GSCFI interrupts come from outside of GT */
+ if (HAS_HECI_GSCFI(xe) && instance == OTHER_GSC_INSTANCE)
+ xe_heci_gsc_irq_handler(xe, intr_vec);
+ else
+ gt_other_irq_handler(engine_gt, instance, intr_vec);
continue;
}
}
--
2.41.0
More information about the Intel-xe
mailing list