mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-07 01:45:18 +02:00
drm/mediatek: Use spin_lock_irqsave() for CRTC event lock
[ Upstream commitbe03b30b7a
] Use the state-aware spin_lock_irqsave() and spin_unlock_irqrestore() to avoid unconditionally re-enabling the local interrupts. Fixes:411f5c1eac
("drm/mediatek: handle events when enabling/disabling crtc") Signed-off-by: Fei Shao <fshao@chromium.org> Link: https://patchwork.kernel.org/project/dri-devel/patch/20240828101511.3269822-1-fshao@chromium.org/ Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
5b9b8cd289
commit
415a2c2183
|
@ -450,6 +450,7 @@ static void mtk_crtc_ddp_hw_fini(struct mtk_drm_crtc *mtk_crtc)
|
||||||
{
|
{
|
||||||
struct drm_device *drm = mtk_crtc->base.dev;
|
struct drm_device *drm = mtk_crtc->base.dev;
|
||||||
struct drm_crtc *crtc = &mtk_crtc->base;
|
struct drm_crtc *crtc = &mtk_crtc->base;
|
||||||
|
unsigned long flags;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) {
|
for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) {
|
||||||
|
@ -481,10 +482,10 @@ static void mtk_crtc_ddp_hw_fini(struct mtk_drm_crtc *mtk_crtc)
|
||||||
pm_runtime_put(drm->dev);
|
pm_runtime_put(drm->dev);
|
||||||
|
|
||||||
if (crtc->state->event && !crtc->state->active) {
|
if (crtc->state->event && !crtc->state->active) {
|
||||||
spin_lock_irq(&crtc->dev->event_lock);
|
spin_lock_irqsave(&crtc->dev->event_lock, flags);
|
||||||
drm_crtc_send_vblank_event(crtc, crtc->state->event);
|
drm_crtc_send_vblank_event(crtc, crtc->state->event);
|
||||||
crtc->state->event = NULL;
|
crtc->state->event = NULL;
|
||||||
spin_unlock_irq(&crtc->dev->event_lock);
|
spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user