Skip to content

Commit 8cadce9

Browse files
junxiaocjlahtine-intel
authored andcommitted
drm/i915/gsc: mei interrupt top half should be in irq disabled context
MEI GSC interrupt comes from i915. It has top half and bottom half. Top half is called from i915 interrupt handler. It should be in irq disabled context. With RT kernel, by default i915 IRQ handler is in threaded IRQ. MEI GSC top half might be in threaded IRQ context. generic_handle_irq_safe API could be called from either IRQ or process context, it disables local IRQ then calls MEI GSC interrupt top half. This change fixes A380/A770 GPU boot hang issue with RT kernel. Fixes: 1e3dc1d ("drm/i915/gsc: add gsc as a mei auxiliary device") Tested-by: Furong Zhou <[email protected]> Suggested-by: Sebastian Andrzej Siewior <[email protected]> Acked-by: Sebastian Andrzej Siewior <[email protected]> Signed-off-by: Junxiao Chang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Rodrigo Vivi <[email protected]> Signed-off-by: Rodrigo Vivi <[email protected]> (cherry picked from commit dccf655f69002d496a527ba441b4f008aa5bebbf) Signed-off-by: Joonas Lahtinen <[email protected]>
1 parent a5aa7bc commit 8cadce9

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/gpu/drm/i915/gt/intel_gsc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ static void gsc_irq_handler(struct intel_gt *gt, unsigned int intf_id)
284284
if (gt->gsc.intf[intf_id].irq < 0)
285285
return;
286286

287-
ret = generic_handle_irq(gt->gsc.intf[intf_id].irq);
287+
ret = generic_handle_irq_safe(gt->gsc.intf[intf_id].irq);
288288
if (ret)
289289
gt_err_ratelimited(gt, "error handling GSC irq: %d\n", ret);
290290
}

0 commit comments

Comments
 (0)