1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm/amd/display/dc
CHANDAN VURDIGERE NATARAJ ca1198849a drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw
[Why]
Below general protection fault observed when WebGL Aquarium is run for
longer duration. If drm debug logs are enabled and set to 0x1f then the
issue is observed within 10 minutes of run.

[  100.717056] general protection fault, probably for non-canonical address 0x2d33302d32323032: 0000 [#1] PREEMPT SMP NOPTI
[  100.727921] CPU: 3 PID: 1906 Comm: DrmThread Tainted: G        W         5.15.30 #12 d726c6a2d6ebe5cf9223931cbca6892f916fe18b
[  100.754419] RIP: 0010:CalculateSwathWidth+0x1f7/0x44f
[  100.767109] Code: 00 00 00 f2 42 0f 11 04 f0 48 8b 85 88 00 00 00 f2 42 0f 10 04 f0 48 8b 85 98 00 00 00 f2 42 0f 11 04 f0 48 8b 45 10 0f 57 c0 <f3> 42 0f 2a 04 b0 0f 57 c9 f3 43 0f 2a 0c b4 e8 8c e2 f3 ff 48 8b
[  100.781269] RSP: 0018:ffffa9230079eeb0 EFLAGS: 00010246
[  100.812528] RAX: 2d33302d32323032 RBX: 0000000000000500 RCX: 0000000000000000
[  100.819656] RDX: 0000000000000001 RSI: ffff99deb712c49c RDI: 0000000000000000
[  100.826781] RBP: ffffa9230079ef50 R08: ffff99deb712460c R09: ffff99deb712462c
[  100.833907] R10: ffff99deb7124940 R11: ffff99deb7124d70 R12: ffff99deb712ae44
[  100.841033] R13: 0000000000000001 R14: 0000000000000000 R15: ffffa9230079f0a0
[  100.848159] FS:  00007af121212640(0000) GS:ffff99deba780000(0000) knlGS:0000000000000000
[  100.856240] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  100.861980] CR2: 0000209000fe1000 CR3: 000000011b18c000 CR4: 0000000000350ee0
[  100.869106] Call Trace:
[  100.871555]  <TASK>
[  100.873655]  ? asm_sysvec_reschedule_ipi+0x12/0x20
[  100.878449]  CalculateSwathAndDETConfiguration+0x1a3/0x6dd
[  100.883937]  dml31_ModeSupportAndSystemConfigurationFull+0x2ce4/0x76da
[  100.890467]  ? kallsyms_lookup_buildid+0xc8/0x163
[  100.895173]  ? kallsyms_lookup_buildid+0xc8/0x163
[  100.899874]  ? __sprint_symbol+0x80/0x135
[  100.903883]  ? dm_update_plane_state+0x3f9/0x4d2
[  100.908500]  ? symbol_string+0xb7/0xde
[  100.912250]  ? number+0x145/0x29b
[  100.915566]  ? vsnprintf+0x341/0x5ff
[  100.919141]  ? desc_read_finalized_seq+0x39/0x87
[  100.923755]  ? update_load_avg+0x1b9/0x607
[  100.927849]  ? compute_mst_dsc_configs_for_state+0x7d/0xd5b
[  100.933416]  ? fetch_pipe_params+0xa4d/0xd0c
[  100.937686]  ? dc_fpu_end+0x3d/0xa8
[  100.941175]  dml_get_voltage_level+0x16b/0x180
[  100.945619]  dcn30_internal_validate_bw+0x10e/0x89b
[  100.950495]  ? dcn31_validate_bandwidth+0x68/0x1fc
[  100.955285]  ? resource_build_scaling_params+0x98b/0xb8c
[  100.960595]  ? dcn31_validate_bandwidth+0x68/0x1fc
[  100.965384]  dcn31_validate_bandwidth+0x9a/0x1fc
[  100.970001]  dc_validate_global_state+0x238/0x295
[  100.974703]  amdgpu_dm_atomic_check+0x9c1/0xbce
[  100.979235]  ? _printk+0x59/0x73
[  100.982467]  drm_atomic_check_only+0x403/0x78b
[  100.986912]  drm_mode_atomic_ioctl+0x49b/0x546
[  100.991358]  ? drm_ioctl+0x1c1/0x3b3
[  100.994936]  ? drm_atomic_set_property+0x92a/0x92a
[  100.999725]  drm_ioctl_kernel+0xdc/0x149
[  101.003648]  drm_ioctl+0x27f/0x3b3
[  101.007051]  ? drm_atomic_set_property+0x92a/0x92a
[  101.011842]  amdgpu_drm_ioctl+0x49/0x7d
[  101.015679]  __se_sys_ioctl+0x7c/0xb8
[  101.015685]  do_syscall_64+0x5f/0xb8
[  101.015690]  ? __irq_exit_rcu+0x34/0x96

[How]
It calles populate_dml_pipes which uses doubles to initialize.
Adding FPU protection avoids context switch and probable loss of vba context
as there is potential contention while drm debug logs are enabled.

Signed-off-by: CHANDAN VURDIGERE NATARAJ <chandan.vurdigerenataraj@amd.com>
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2022-04-06 12:02:57 -04:00
..
basics Revert "drm/amd/display: Unblank hubp based on plane visibility" 2021-02-18 16:43:10 -05:00
bios drm/amdgpu/dc: fix typos in comments 2022-03-15 15:01:12 -04:00
clk_mgr drm/amd/display: Add fSMC_MSG_SetDtbClk support 2022-03-25 12:40:24 -04:00
core drm/amd/display: Revert FEC check in validation 2022-04-06 11:42:32 -04:00
dce drm/amd/display: Update engine ddc 2022-03-15 14:41:22 -04:00
dce60 drm/amd/display/dc/dce60/dce60_resource: Include our own header containing prototypes 2021-01-14 13:20:21 -05:00
dce80 drm/amd/display: Return last used DRR VTOTAL from DC 2021-06-08 12:20:12 -04:00
dce100 drm/amd/display/dc/dce100/dce100_resource: Include our own header containing prototypes 2021-01-14 13:20:20 -05:00
dce110 drm/amd/display: Program OPP before ODM 2022-03-04 12:43:02 -05:00
dce112 drm/amd/display: Use NULL instead of 0 2022-02-24 17:26:20 -05:00
dce120 drm/amd/display: Return last used DRR VTOTAL from DC 2021-06-08 12:20:12 -04:00
dcn10 drm/amd/display: Enable power gating before init_pipes 2022-04-06 11:42:32 -04:00
dcn20 drm/amd/display: Add support for zstate during extended vblank 2022-03-25 12:40:25 -04:00
dcn21 drm/amd/display: move FPU operations from dcn21 to dml/dcn20 folder 2022-03-15 14:25:16 -04:00
dcn30 drm/amd/display: Enable power gating before init_pipes 2022-04-06 11:42:32 -04:00
dcn31 drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw 2022-04-06 12:02:57 -04:00
dcn201 drm/amd/display: Add missing prototypes to dcn201_init 2022-02-23 14:03:20 -05:00
dcn301 drm/amd/display: Add pstate verification and recovery for DCN31 2022-03-15 14:33:57 -04:00
dcn302 drm/amdgpu: move dpcs_3_0_0 headers from dcn to dpcs 2022-02-07 18:03:50 -05:00
dcn303 drm/amd/display: move FPU associated DCN303 code to DML folder 2022-03-15 14:25:15 -04:00
dcn315 drm/amd/display: move FPU-related code from dcn20 to dml folder 2022-03-15 14:25:16 -04:00
dcn316 drm/amd/display: move FPU-related code from dcn20 to dml folder 2022-03-15 14:25:16 -04:00
dml drm/amd/display: Add support for zstate during extended vblank 2022-03-25 12:40:25 -04:00
dsc drm/amd/display: Correct Slice reset calculation 2022-04-06 11:26:19 -04:00
gpio drm/amd/display: Add null pointer filter 2022-03-15 14:41:48 -04:00
hdcp drm/amd/display: Enforce DPCD Address ranges 2021-06-15 17:25:41 -04:00
inc drm/amd/display: Add work around for AUX failure on wake. 2022-04-06 11:42:32 -04:00
irq drm/amd/display: Turn functions into static 2022-02-24 17:26:25 -05:00
link drm/amd/display: Add link dp trace support 2022-03-15 14:25:15 -04:00
virtual drm/amd/display: move link_hwss to link folder and break down to files 2022-02-02 18:26:32 -05:00
dc.h drm/amd/display: Add support for zstate during extended vblank 2022-03-25 12:40:25 -04:00
dc_bios_types.h drm/amd/display: Interface for LTTPR interop 2021-04-09 16:48:25 -04:00
dc_ddc_types.h drm/amd/display: Support for DMUB AUX 2021-03-02 14:05:41 -05:00
dc_dmub_srv.c drm/amd/display: Wait for ACK for INBOX0 HW Lock 2021-11-17 16:58:11 -05:00
dc_dmub_srv.h drm/amd/display: Wait for ACK for INBOX0 HW Lock 2021-11-17 16:58:11 -05:00
dc_dp_types.h drm/amd/display: add cable ID support for usb c connector 2022-02-23 14:22:03 -05:00
dc_dsc.h drm/amd/display: move bpp range decision in decide dsc bw range function 2021-09-14 15:57:09 -04:00
dc_edid_parser.c drm/amd/display: Add Freesync HDMI support to DMCU 2021-02-02 12:11:41 -05:00
dc_edid_parser.h drm/amd/display: Add Freesync HDMI support to DMCU 2021-02-02 12:11:41 -05:00
dc_helper.c drm/amd/display: Support synchronized indirect reg access 2022-01-25 18:00:35 -05:00
dc_hw_types.h drm/amd/display: add dsc mst stream pbn log for debug 2022-02-16 17:12:00 -05:00
dc_link.h drm/amd/display: Add I2C escape to support query device exist. 2022-03-15 14:41:03 -04:00
dc_stat.h drm/amd/display: DMUB Outbound Interrupt Process-X86 2021-07-08 15:14:36 -04:00
dc_stream.h drm/amd/display: Add support for zstate during extended vblank 2022-03-25 12:40:25 -04:00
dc_trace.h drm/amd/display: Add control mechanism for FPU utilization 2021-08-05 21:17:59 -04:00
dc_types.h drm/amd/display: Add new enum for EDID status 2022-03-15 14:41:34 -04:00
dm_cp_psp.h drm/amd/display: unhard code link to phy idx mapping in dc link and clean up 2022-01-07 17:21:20 -05:00
dm_event_log.h drm/amd/display: Add customizable tracing event 2018-11-30 12:02:49 -05:00
dm_helpers.h drm/amd/display: refine the EDID override 2022-03-04 13:03:29 -05:00
dm_pp_smu.h drm/amdgpu/pm: display vcn pp dpm (v4) 2021-05-21 10:31:55 -04:00
dm_services.h drm/amd/display: Decouple amdgpu_dm_trace from service 2020-10-26 13:33:59 -04:00
dm_services_types.h drm/amd/display: Add definition for number of backlight data points 2019-12-18 16:09:08 -05:00
irq_types.h drm/amd/display: Fix for access for ddc pin and aux engine. 2021-10-06 15:52:48 -04:00
Makefile drm/amd/display: Add DCN315 blocks to Makefile 2022-02-18 14:07:01 -05:00
os_types.h drm/dp: Move public DisplayPort headers into dp/ 2022-01-17 11:25:44 +01:00