Skip to content

Commit 17445af

Browse files
junxiaocThomas Hellström
authored andcommitted
drm/me/gsc: mei interrupt top half should be in irq disabled context
MEI GSC interrupt comes from i915 or xe driver. It has top half and bottom half. Top half is called from i915/xe interrupt handler. It should be in irq disabled context. With RT kernel(PREEMPT_RT enabled), by default 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 B580 GPU boot issue with RT enabled. Fixes: e02cea8 ("drm/xe/gsc: add Battlemage support") Tested-by: Baoli Zhang <baoli.zhang@intel.com> Signed-off-by: Junxiao Chang <junxiao.chang@intel.com> Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Link: https://patch.msgid.link/20251107033152.834960-1-junxiao.chang@intel.com Signed-off-by: Maarten Lankhorst <dev@lankhorst.se> (cherry picked from commit 3efadf0) Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
1 parent 61e6b71 commit 17445af

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/gpu/drm/xe/xe_heci_gsc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ void xe_heci_gsc_irq_handler(struct xe_device *xe, u32 iir)
223223
if (xe->heci_gsc.irq < 0)
224224
return;
225225

226-
ret = generic_handle_irq(xe->heci_gsc.irq);
226+
ret = generic_handle_irq_safe(xe->heci_gsc.irq);
227227
if (ret)
228228
drm_err_ratelimited(&xe->drm, "error handling GSC irq: %d\n", ret);
229229
}
@@ -243,7 +243,7 @@ void xe_heci_csc_irq_handler(struct xe_device *xe, u32 iir)
243243
if (xe->heci_gsc.irq < 0)
244244
return;
245245

246-
ret = generic_handle_irq(xe->heci_gsc.irq);
246+
ret = generic_handle_irq_safe(xe->heci_gsc.irq);
247247
if (ret)
248248
drm_err_ratelimited(&xe->drm, "error handling GSC irq: %d\n", ret);
249249
}

0 commit comments

Comments
 (0)