Skip to content

Commit 6a17e0d

Browse files
junxiaocgregkh
authored andcommitted
drm/i915/gsc: mei interrupt top half should be in irq disabled context
[ Upstream commit 8cadce9 ] 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]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 5a7ae7b commit 6a17e0d

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)