drm/rockchip: dw_hdmi: Fix crash when hdmi is disabled in kernel logo

crash log:
[   11.867212][   T80] Unable to handle kernel read from unreadable memory at virtual address 0000000000000090
[   11.868072][   T80] Mem abort info:
[   11.868390][   T80]   ESR = 0x0000000096000005
[   11.868795][   T80]   EC = 0x25: DABT (current EL), IL = 32 bits
[   11.869326][   T80]   SET = 0, FnV = 0
[   11.869667][   T80]   EA = 0, S1PTW = 0
[   11.870008][   T80]   FSC = 0x05: level 1 translation fault
[   11.870504][   T80] Data abort info:
[   11.870822][   T80]   ISV = 0, ISS = 0x00000005
[   11.871228][   T80]   CM = 0, WnR = 0
[   11.871558][   T80] [0000000000000090] user address but active_mm is swapper
[   11.872178][   T80] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
[   11.872798][   T80] Modules linked in:
[   11.873142][   T80] CPU: 4 PID: 80 Comm: kworker/u16:2 Not tainted 6.1.118 #70
[   11.873787][   T80] Hardware name: Rockchip RK3576 EVB1 V10 Board (DT)
[   11.874362][   T80] Workqueue: events_unbound deferred_probe_work_func
[   11.874947][   T80] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   11.875625][   T80] pc : rockchip_drm_crtc_output_pre_disable+0xc/0x44
[   11.876205][   T80] lr : dw_hdmi_rockchip_crtc_pre_disable+0x34/0x54
[   11.876772][   T80] sp : ffffffc00ab7b5f0
[   11.877134][   T80] x29: ffffffc00ab7b5f0 x28: ffffffc009633ea8 x27: ffffff80c6014240
[   11.877838][   T80] x26: 0000000000000038 x25: 0000000000000001 x24: 0000000000000028
[   11.878531][   T80] x23: 0000000000000000 x22: ffffff80c6014240 x21: ffffff80c1b157b8
[   11.879222][   T80] x20: ffffff80c2b7e840 x19: ffffff80c1b15040 x18: ffffffc00ab650f0
[   11.879915][   T80] x17: 0000000000000068 x16: 00000000000000c4 x15: ffffffc009502784
[   11.880607][   T80] x14: 0000000000003738 x13: ffffffc00ab7b272 x12: 0000000000000000
[   11.881300][   T80] x11: 0000000000000001 x10: 0000000000000001 x9 : ffffff80c2b7e868
[   11.882002][   T80] x8 : 0000000000000800 x7 : 3d45505954564544 x6 : 000000004e514553
[   11.882694][   T80] x5 : 0000000000000000 x4 : 0000000000000000 x3 : ffffffc00a32e3c0
[   11.883396][   T80] x2 : 0000000000000000 x1 : 0000000000000800 x0 : 0000000000000000
[   11.884088][   T80] Call trace:
[   11.884373][   T80]  rockchip_drm_crtc_output_pre_disable+0xc/0x44
[   11.884928][   T80]  dw_hdmi_rockchip_crtc_pre_disable+0x34/0x54
[   11.885461][   T80]  dw_hdmi_qp_bridge_atomic_disable+0xc8/0x1d4
[   11.885994][   T80]  drm_atomic_bridge_chain_disable+0x6c/0xb4
[   11.886518][   T80]  drm_atomic_helper_commit_modeset_disables+0x174/0x57c
[   11.887129][   T80]  rockchip_drm_atomic_helper_commit_tail_rpm+0x4c/0x304
[   11.887741][   T80]  commit_tail+0xa4/0x154
[   11.888117][   T80]  drm_atomic_helper_commit+0x1c4/0x1e4
[   11.888604][   T80]  drm_atomic_commit+0xa4/0xd0
[   11.889016][   T80]  rockchip_drm_show_logo+0x1a48/0x1d64
[   11.889505][   T80]  rockchip_drm_bind+0x1d8/0x298
[   11.889937][   T80]  try_to_bring_up_aggregate_device+0x168/0x1b4
[   11.890481][   T80]  __component_add+0xd0/0x17c
[   11.890891][   T80]  component_add+0x14/0x20
[   11.891279][   T80]  dw_mipi_dsi2_host_attach+0x158/0x1d4
[   11.891768][   T80]  mipi_dsi_attach+0x28/0x3c
[   11.892171][   T80]  panel_simple_dsi_probe+0x1a8/0x22c
[   11.892638][   T80]  mipi_dsi_drv_probe+0x20/0x2c
[   11.893059][   T80]  really_probe+0x174/0x350
[   11.893447][   T80]  __driver_probe_device+0xa0/0x128
[   11.893901][   T80]  driver_probe_device+0x44/0x210
[   11.894333][   T80]  __device_attach_driver+0x12c/0x154
[   11.894798][   T80]  bus_for_each_drv+0x84/0xd0
[   11.895211][   T80]  __device_attach+0xf0/0x170
[   11.895621][   T80]  device_initial_probe+0x14/0x20
[   11.896063][   T80]  bus_probe_device+0x34/0x98
[   11.896475][   T80]  deferred_probe_work_func+0x7c/0xd8
[   11.896940][   T80]  process_one_work+0x1a8/0x3b8
[   11.897365][   T80]  worker_thread+0x300/0x430
[   11.897766][   T80]  kthread+0xec/0x1b8
[   11.898110][   T80]  ret_from_fork+0x10/0x20

Change-Id: Ie336d9b7a06970284589f79a955173a44ab41636
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
This commit is contained in:
Algea Cao
2025-03-12 09:50:35 +08:00
committed by Tao Huang
parent 2585fced1c
commit 78b9e8a196

View File

@@ -3248,6 +3248,9 @@ static void dw_hdmi_rockchip_crtc_post_enable(void *data, struct drm_crtc *crtc)
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
int output_if;
if (!crtc)
return;
switch (hdmi->id) {
case 0:
output_if = VOP_OUTPUT_IF_HDMI0;
@@ -3268,6 +3271,9 @@ static void dw_hdmi_rockchip_crtc_pre_disable(void *data, struct drm_crtc *crtc)
struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data;
int output_if;
if (!crtc)
return;
switch (hdmi->id) {
case 0:
output_if = VOP_OUTPUT_IF_HDMI0;