Fangzhi Zuo
1b5b72b4d6
drm/amd/display: Fix MST Null Ptr for RV
The change try to fix below error specific to RV platform:
BUG: kernel NULL pointer dereference, address: 0000000000000008
PGD 0 P4D 0
Oops: 0000 [#1] PREEMPT SMP NOPTI
CPU: 4 PID: 917 Comm: sway Not tainted 6.3.9-arch1-1 #1 124dc55df4f5272ccb409f39ef4872fc2b3376a2
Hardware name: LENOVO 20NKS01Y00/20NKS01Y00, BIOS R12ET61W(1.31 ) 07/28/2022
RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
FS: 00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
Call Trace:
<TASK>
? __die+0x23/0x70
? page_fault_oops+0x171/0x4e0
? plist_add+0xbe/0x100
? exc_page_fault+0x7c/0x180
? asm_exc_page_fault+0x26/0x30
? drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
? drm_dp_atomic_find_time_slots+0x28/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
compute_mst_dsc_configs_for_link+0x2ff/0xa40 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
? fill_plane_buffer_attributes+0x419/0x510 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
compute_mst_dsc_configs_for_state+0x1e1/0x250 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
amdgpu_dm_atomic_check+0xecd/0x1190 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
drm_atomic_check_only+0x5c5/0xa40
drm_mode_atomic_ioctl+0x76e/0xbc0
? _copy_to_user+0x25/0x30
? drm_ioctl+0x296/0x4b0
? __pfx_drm_mode_atomic_ioctl+0x10/0x10
drm_ioctl_kernel+0xcd/0x170
drm_ioctl+0x26d/0x4b0
? __pfx_drm_mode_atomic_ioctl+0x10/0x10
amdgpu_drm_ioctl+0x4e/0x90 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
__x64_sys_ioctl+0x94/0xd0
do_syscall_64+0x60/0x90
? do_syscall_64+0x6c/0x90
entry_SYSCALL_64_after_hwframe+0x72/0xdc
RIP: 0033:0x7f4dad17f76f
Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c>
RSP: 002b:00007ffd9ae859f0 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 000055e255a55900 RCX: 00007f4dad17f76f
RDX: 00007ffd9ae85a90 RSI: 00000000c03864bc RDI: 000000000000000b
RBP: 00007ffd9ae85a90 R08: 0000000000000003 R09: 0000000000000003
R10: 0000000000000000 R11: 0000000000000246 R12: 00000000c03864bc
R13: 000000000000000b R14: 000055e255a7fc60 R15: 000055e255a01eb0
</TASK>
Modules linked in: rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device ccm cmac algif_hash algif_skcipher af_alg joydev mousedev bnep >
typec libphy k10temp ipmi_msghandler roles i2c_scmi acpi_cpufreq mac_hid nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_mas>
CR2: 0000000000000008
---[ end trace 0000000000000000 ]---
RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
FS: 00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
With a second DP monitor connected, drm_atomic_state in dm atomic check
sequence does not include the connector state for the old/existing/first
DP monitor. In such case, dsc determination policy would hit a null ptr
when it tries to iterate the old/existing stream that does not have a
valid connector state attached to it. When that happens, dm atomic check
should call drm_atomic_get_connector_state for a new connector state.
Existing dm has already done that, except for RV due to it does not have
official support of dsc where .num_dsc is not defined in dcn10 resource
cap, that prevent from getting drm_atomic_get_connector_state called.
So, skip dsc determination policy for ASICs that don't have DSC support.
Cc: stable@vger.kernel.org # 6.1+
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2314
Reviewed-by: Wayne Lin <wayne.lin@amd.com>
Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2024-02-07 12:26:23 -05:00
..
2023-12-19 11:09:44 +02:00
2023-12-07 21:38:21 +01:00
2023-11-03 14:51:08 -10:00
2023-12-02 06:27:20 +09:00
2023-11-02 14:05:18 -10:00
2023-11-29 12:20:44 +01:00
2023-12-09 12:44:10 -08:00
2023-11-21 07:42:04 -07:00
2023-11-01 14:46:51 -10:00
2023-10-26 09:42:37 +02:00
2023-11-03 14:51:08 -10:00
2023-12-06 10:08:41 +01:00
2023-11-01 14:46:51 -10:00
2023-11-10 09:23:17 -08:00
2023-10-24 10:53:45 +02:00
2023-11-29 22:04:15 +01:00
2023-10-27 18:04:29 +08:00
2023-11-02 14:09:01 -07:00
2023-11-02 19:38:47 -10:00
2023-11-03 18:56:51 -10:00
2023-12-12 13:06:29 +09:00
2023-11-21 17:41:20 -08:00
2023-10-30 19:09:55 -10:00
2023-12-03 09:03:07 +09:00
2023-12-08 08:58:39 -08:00
2023-11-03 14:51:08 -10:00
2023-12-01 10:44:48 +01:00
2024-02-07 12:26:23 -05:00
2023-12-05 09:10:01 +09:00
2023-11-29 12:20:25 +01:00
2023-10-31 18:32:51 -10:00
2023-11-03 15:44:25 -10:00
2023-12-08 10:36:02 -08:00
2023-11-16 10:00:14 +00:00
2023-11-13 12:43:42 -05:00
2023-11-04 16:25:36 -10:00
2023-11-03 14:51:08 -10:00
2023-12-04 20:02:41 -04:00
2023-11-09 14:18:42 -08:00
2023-12-05 06:54:52 +09:00
2023-11-19 13:49:32 -08:00
2023-10-30 19:09:55 -10:00
2023-12-06 07:36:55 -08:00
2023-11-03 10:07:39 -10:00
2023-11-05 18:45:32 -08:00
2023-12-08 12:36:45 -08:00
2023-12-12 13:06:29 +09:00
2023-11-09 13:37:28 -08:00
2023-10-24 22:36:39 -04:00
2023-11-02 14:40:51 -10:00
2023-11-27 13:38:29 +00:00
2023-11-23 18:04:17 +01:00
2023-11-10 09:19:46 -08:00
2023-12-07 10:03:17 -08:00
2023-11-22 10:55:48 +00:00
2023-12-07 08:53:20 -08:00
2023-12-07 11:19:32 +09:00
2023-12-07 12:22:36 -08:00
2023-11-18 18:59:30 +01:00
2023-12-07 11:10:44 +09:00
2023-11-04 16:20:36 -10:00
2023-11-07 16:40:42 -08:00
2023-11-10 12:22:14 -08:00
2023-12-04 16:07:29 +02:00
2023-11-24 10:39:20 +01:00
2023-12-13 15:22:29 -05:00
2023-12-02 09:01:00 +09:00
2023-11-03 16:00:42 -10:00
2023-12-05 20:51:24 +01:00
2023-11-13 20:51:37 -08:00
2023-11-21 11:09:32 +01:00
2023-10-30 13:14:27 +00:00
2023-10-24 14:10:04 -07:00
2023-11-05 18:49:40 -08:00
2023-11-23 17:40:15 -08:00
2023-12-05 20:38:26 -05:00
2023-10-25 16:50:11 +02:00
2023-12-04 16:07:29 +02:00
2023-11-03 19:10:41 -10:00
2023-11-10 11:44:38 -08:00
2023-11-01 10:02:18 +00:00
2023-11-29 12:20:41 +01:00
2023-11-02 15:13:50 -10:00
2023-12-06 16:15:26 +01:00
2023-10-31 15:28:37 -10:00
2023-11-17 13:05:57 +02:00
2023-12-07 10:48:56 +09:00
2023-11-24 20:35:24 -05:00
2023-12-19 17:07:32 +10:00
2023-12-01 09:55:01 -05:00
2023-11-27 09:29:03 -07:00
2023-11-16 07:39:37 -05:00
2023-11-29 12:20:53 +01:00
2023-11-04 15:58:13 -10:00
2023-11-16 07:39:37 -05:00
2023-11-10 09:19:46 -08:00
2023-11-28 12:48:27 +01:00
2023-11-10 09:19:46 -08:00
2023-11-10 09:19:46 -08:00