提交 a6c04d49 编写于 作者: J Johan Hovold 提交者: Lipeng Sang

drm/msm/dp: fix IRQ lifetime

stable inclusion
from stable-v5.10.153
commit b686ffc0acb859f288535ce1a00b102ab8a66f7a
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I64YCA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=b686ffc0acb859f288535ce1a00b102ab8a66f7a

--------------------------------

commit a79343dc upstream.

Device-managed resources allocated post component bind must be tied to
the lifetime of the aggregate DRM device or they will not necessarily be
released when binding of the aggregate device is deferred.

This is specifically true for the DP IRQ, which will otherwise remain
requested so that the next bind attempt fails when requesting the IRQ a
second time.

Since commit c3bf8e21 ("drm/msm/dp: Add eDP support via aux_bus")
this can happen when the aux-bus panel driver has not yet been loaded so
that probe is deferred.

Fix this by tying the device-managed lifetime of the DP IRQ to the DRM
device so that it is released when bind fails.

Fixes: c943b494 ("drm/msm/dp: add displayPort driver support")
Cc: stable@vger.kernel.org      # 5.10
Reviewed-by: NDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: NJohan Hovold <johan+linaro@kernel.org>
Tested-by: NKuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: NKuogee Hsieh <quic_khsieh@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/502679/
Link: https://lore.kernel.org/r/20220913085320.8577-6-johan+linaro@kernel.orgSigned-off-by: NAbhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NLipeng Sang <sanglipeng1@jd.com>
上级 65a9f887
...@@ -1201,7 +1201,7 @@ int dp_display_request_irq(struct msm_dp *dp_display) ...@@ -1201,7 +1201,7 @@ int dp_display_request_irq(struct msm_dp *dp_display)
return -EINVAL; return -EINVAL;
} }
rc = devm_request_irq(&dp->pdev->dev, dp->irq, rc = devm_request_irq(dp_display->drm_dev->dev, dp->irq,
dp_display_irq_handler, dp_display_irq_handler,
IRQF_TRIGGER_HIGH, "dp_display_isr", dp); IRQF_TRIGGER_HIGH, "dp_display_isr", dp);
if (rc < 0) { if (rc < 0) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册