From: Maarten Lankhorst <[email protected]> The LPE audio interrupt comes from the i915 interrupt handler. It should be in irq disabled context.
With PREEMPT_RT enabled, the IRQ handler is threaded. Because intel_lpe_audio_irq_handler() may be called in threaded IRQ context, generic_handle_irq_safe API disables the interrupts before calling LPE's interrupt top half handler. This fixes braswell audio issues with RT enabled. Signed-off-by: Maarten Lankhorst <[email protected]> Reviewed-by: Matthew Brost <[email protected]> Reviewed-by: Uma Shankar <[email protected]> Signed-off-by: Runyu Xiao <[email protected]> --- v3: - Rebase the standalone patch on Maarten Lankhorst's original fix - Keep Maarten Lankhorst as author per Sebastian's feedback - Carry forward Maarten's Reviewed-by tags drivers/gpu/drm/i915/display/intel_lpe_audio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_lpe_audio.c b/drivers/gpu/drm/i915/display/intel_lpe_audio.c index 42284e9928f2..ac1dfd592a9f 100644 --- a/drivers/gpu/drm/i915/display/intel_lpe_audio.c +++ b/drivers/gpu/drm/i915/display/intel_lpe_audio.c @@ -263,7 +263,7 @@ void intel_lpe_audio_irq_handler(struct intel_display *display) if (!HAS_LPE_AUDIO(display)) return; - ret = generic_handle_irq(display->audio.lpe.irq); + ret = generic_handle_irq_safe(display->audio.lpe.irq); if (ret) drm_err_ratelimited(display->drm, "error handling LPE audio irq: %d\n", ret); -- 2.34.1
