linux/drivers/gpu/drm
CHANDAN VURDIGERE NATARAJ 50e6cb3fd2 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>
2022-04-05 10:26:05 -04:00
..
amd drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw 2022-04-05 10:26:05 -04:00
arm
armada
aspeed drm/aspeed: Add AST2600 chip support 2022-03-03 09:08:35 +10:30
ast drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
atmel-hlcdc
bridge drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
dp drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
etnaviv drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
exynos drm/exynos: fimd: add BGR support for exynos4/5 2022-03-04 17:13:52 +09:00
fsl-dcu
gma500 drm/gma500: Add support for the nomodeset kernel parameter 2022-01-27 19:15:48 +01:00
gud
hisilicon
hyperv drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
i2c
i810
i915 drm/i915/display: Do not re-enable PSR after it was marked as not reliable 2022-03-16 08:17:40 +02:00
imx Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
ingenic
kmb drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
lib drm/selftests: add drm buddy alloc range testcase 2022-02-23 10:44:43 +01:00
lima drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
mcde
mediatek Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
meson
mga
mgag200 drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
msm Merge tag 'drm-msm-next-2022-03-08' of https://gitlab.freedesktop.org/drm/msm into drm-next 2022-03-10 09:26:50 +10:00
mxsfb drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
nouveau drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
omapdrm drm/omap: plane: Remove redundant color encoding and range initialisation 2022-02-25 17:57:23 +01:00
panel drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
panfrost drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
pl111
qxl drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
r128
radeon drm/radeon: Use drm_mode_copy() 2022-03-15 15:01:12 -04:00
rcar-du drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
rockchip drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
savage
scheduler drm/sched: Add device pointer to drm_gpu_scheduler 2022-02-23 10:04:14 +01:00
selftests drm/selftests: add drm buddy pathological testcase 2022-02-23 10:46:32 +01:00
shmobile
sis
solomon drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
sprd drm/sprd: check the platform_get_resource() return value 2022-02-14 21:53:17 +08:00
sti drm/sti: plane: Remove redundant zpos initialisation 2022-02-25 17:57:05 +01:00
stm drm/stm: ltdc: add support for CRC hashing feature 2022-02-25 14:14:28 +01:00
sun4i drm/sun4i: layer: Remove redundant zpos initialisation 2022-02-25 17:57:10 +01:00
tdfx
tegra drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
tidss
tilcdc
tiny drm-misc-next for v5.18: 2022-03-04 13:41:57 +10:00
ttm drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
tve200
udl
v3d drm/v3d: centralize error handling when init scheduler fails 2022-03-01 22:37:13 -01:00
vboxvideo drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
vc4 Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
vgem
via
virtio drm/gem-shmem: Set vm_ops in static initializer 2022-02-14 09:42:01 +01:00
vkms Merge tag 'drm-intel-gt-next-2022-02-17' of git://anongit.freedesktop.org/drm/drm-intel into drm-intel-next 2022-02-23 15:03:51 -05:00
vmwgfx
xen drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
xlnx
drm_agpsupport.c
drm_aperture.c
drm_atomic.c
drm_atomic_helper.c
drm_atomic_state_helper.c drm/object: Add default color encoding and range value at reset 2022-02-25 17:57:14 +01:00
drm_atomic_uapi.c drm/atomic: Don't pollute crtc_state->mode_blob with error pointers 2022-02-16 12:32:07 +02:00
drm_auth.c
drm_blend.c
drm_bridge.c
drm_bridge_connector.c drm: Plumb debugfs_init through to panels 2022-02-15 15:25:18 -08:00
drm_buddy.c drm/selftests: add drm buddy alloc range testcase 2022-02-23 10:44:43 +01:00
drm_bufs.c
drm_cache.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_client.c
drm_client_modeset.c
drm_color_mgmt.c
drm_connector.c drm/connector: use drm_sysfs_connector_hotplug_event 2021-11-02 14:27:11 +01:00
drm_context.c drm: correct function name drm_legacy_ctxbitmap_flush() 2021-05-16 22:01:14 +02:00
drm_crtc.c
drm_crtc_helper.c drm : Insert blank lines after declarations. 2020-07-02 15:26:00 +02:00
drm_crtc_helper_internal.h
drm_crtc_internal.h
drm_damage_helper.c
drm_debugfs.c drm: Plumb debugfs_init through to panels 2022-02-15 15:25:18 -08:00
drm_debugfs_crc.c
drm_displayid.c
drm_dma.c
drm_drv.c
drm_dsc.c
drm_dumb_buffers.c drm: Don't export the drm_gem_dumb_destroy() function 2021-01-05 07:20:25 +02:00
drm_edid.c Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
drm_edid_load.c drm/print: add drm_debug_enabled() 2019-10-02 16:28:55 +03:00
drm_encoder.c
drm_encoder_slave.c
drm_fb_cma_helper.c drm: Add and export function drm_fb_cma_sync_non_coherent 2021-05-25 11:42:09 +01:00
drm_fb_helper.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_file.c drm: Fix typo in comments 2021-08-02 10:19:43 +02:00
drm_flip_work.c
drm_format_helper.c drm/format-helper: Add drm_fb_xrgb8888_to_mono_reversed() 2022-02-16 13:29:04 +01:00
drm_fourcc.c
drm_framebuffer.c
drm_gem.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_gem_atomic_helper.c
drm_gem_cma_helper.c Linux 5.17-rc6 2022-02-28 14:57:14 +10:00
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_gem_ttm_helper.c
drm_gem_vram_helper.c
drm_hashtab.c
drm_hdcp.c
drm_internal.h
drm_ioc32.c drm: Copy drm_wait_vblank to user before returning 2021-08-17 13:56:03 -04:00
drm_ioctl.c
drm_irq.c
drm_kms_helper_common.c
drm_lease.c
drm_legacy.h
drm_legacy_misc.c drm: IRQ midlayer is now legacy 2021-08-10 20:14:01 +02:00
drm_lock.c
drm_managed.c
drm_memory.c
drm_mipi_dbi.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c
drm_mode_object.c drm/object: Add drm_object_property_get_default_value() function 2022-02-25 17:55:42 +01:00
drm_modes.c drm/modes: Add of_get_drm_panel_display_mode() 2022-02-28 10:29:33 +01:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_nomodeset.c
drm_of.c drm: of: Lookup if child node has panel or bridge 2022-02-25 17:08:37 +01:00
drm_panel.c
drm_panel_orientation_quirks.c Merge drm/drm-next into drm-intel-next 2022-01-31 13:19:33 -05:00
drm_pci.c
drm_plane.c
drm_plane_helper.c drm/plane-helper: fix uninitialized variable reference 2021-10-07 12:24:44 +02:00
drm_prime.c
drm_print.c
drm_privacy_screen.c drm-misc-next for v5.18: 2022-02-25 05:50:18 +10:00
drm_privacy_screen_x86.c
drm_probe_helper.c
drm_property.c drm: property: Replace strncpy() with strscpy_pad() 2021-10-07 05:42:13 +03:00
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c drm/simple-kms: Support custom CRTC state 2021-08-08 20:14:08 +02:00
drm_syncobj.c
drm_sysfs.c
drm_trace.h
drm_trace_points.c
drm_vblank.c drm: IRQ midlayer is now legacy 2021-08-10 20:14:01 +02:00
drm_vblank_work.c This tree adds the sched_set_fifo*() encapsulation APIs to remove 2020-08-06 11:55:43 -07:00
drm_vm.c
drm_vma_manager.c
drm_writeback.c
Kconfig drm/selftests: Move i915 buddy selftests into drm 2022-02-23 10:43:25 +01:00
Makefile drm: Add driver for Solomon SSD130x OLED displays 2022-02-16 13:29:04 +01:00