![]() The dw_hdmi_setup_rx_sense exported function should not use struct device
to recover the dw-hdmi context using drvdata, but take struct dw_hdmi
directly like other exported functions.
This caused a regression using Meson DRM on S905X since v4.17-rc1 :
Internal error: Oops: 96000007 [#1] PREEMPT SMP
[...]
CPU: 0 PID: 124 Comm: irq/32-dw_hdmi_ Not tainted 4.17.0-rc7 #2
Hardware name: Libre Technology CC (DT)
[...]
pc : osq_lock+0x54/0x188
lr : __mutex_lock.isra.0+0x74/0x530
[...]
Process irq/32-dw_hdmi_ (pid: 124, stack limit = 0x00000000adf418cb)
Call trace:
osq_lock+0x54/0x188
__mutex_lock_slowpath+0x10/0x18
mutex_lock+0x30/0x38
__dw_hdmi_setup_rx_sense+0x28/0x98
dw_hdmi_setup_rx_sense+0x10/0x18
dw_hdmi_top_thread_irq+0x2c/0x50
irq_thread_fn+0x28/0x68
irq_thread+0x10c/0x1a0
kthread+0x128/0x130
ret_from_fork+0x10/0x18
Code: 34000964 d00050a2 51000484 9135c042 (f864d844)
---[ end trace 945641e1fbbc07da ]---
note: irq/32-dw_hdmi_[124] exited with preempt_count 1
genirq: exiting task "irq/32-dw_hdmi_" (124) is an active IRQ thread (irq 32)
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
meson_canvas.c | ||
meson_canvas.h | ||
meson_crtc.c | ||
meson_crtc.h | ||
meson_drv.c | ||
meson_drv.h | ||
meson_dw_hdmi.c | ||
meson_dw_hdmi.h | ||
meson_plane.c | ||
meson_plane.h | ||
meson_registers.h | ||
meson_vclk.c | ||
meson_vclk.h | ||
meson_venc.c | ||
meson_venc.h | ||
meson_venc_cvbs.c | ||
meson_venc_cvbs.h | ||
meson_viu.c | ||
meson_viu.h | ||
meson_vpp.c | ||
meson_vpp.h |