GPU: R9 390 GPU manufacturer: Gigabyte Kernel: 4.5, 4.6, etc Firmware: both hawaii_smc.bin and hawaii_k_smc.bin Hello, I am experiencing heavy LCD screen flickering in OpenGL apps when automatic GPU power management is enabled. The flickering is related to mclk transitions. Forcing mclk=1.5GHz, and letting sclk be controlled by DPM, removes the flickering. Related issues: http://bugs.freedesktop.org/show_bug.cgi?id=91880 http://bugs.freedesktop.org/show_bug.cgi?id=92302
Confirmed by lilleman on #radeon: https://people.freedesktop.org/~cbrill/dri-log/?channel=radeon&date=2016-06-17
The flickering disappears after switching from X11 to Linux console (Ctrl+Alt+F1) and back (Ctrl+Alt+F7). mclk transitions 150MHz <-> 1500MHz no longer cause monitor flickering after that. The code in the Linux kernel executed during the switch to Linux console and back fixes the issue, we just need to pinpoint the code lines responsible for the fix.
Please attach your xorg log and dmesg output. What resolution and refresh rate are you using on your monitor? Also are you using radeon or amdgpu?
Created attachment 125424 [details] dmesg (linux kernel git 2016-jul-29 with custom patches)
Created attachment 125425 [details] Xorg.0.log (xorg-server-1.17.4, no custom patches)
(In reply to Alex Deucher from comment #3) > Please attach your xorg log and dmesg output. Upstream Linux kernel does not support variable mclk on R9 390. I enabled variable mclk by patching some code in drivers/gpu/drm/amd/amdgpu/ (mostly ci_dpm.c). dmesg output contains some logging messages I added to my copy of Linux kernel source code. > What resolution and refresh rate are you using on your monitor? 1920x1080 60Hz > Also are you using radeon or amdgpu? Currently amdgpu.ko, radeon.ko in the past.
(In reply to Jan Ziak from comment #6) > (In reply to Alex Deucher from comment #3) > > Please attach your xorg log and dmesg output. > > Upstream Linux kernel does not support variable mclk on R9 390. I enabled > variable mclk by patching some code in drivers/gpu/drm/amd/amdgpu/ (mostly > ci_dpm.c). What patch(es) did you use? > > dmesg output contains some logging messages I added to my copy of Linux > kernel source code. > > > What resolution and refresh rate are you using on your monitor? > > 1920x1080 60Hz > > > Also are you using radeon or amdgpu? > > Currently amdgpu.ko, radeon.ko in the past.
(In reply to Alex Deucher from comment #7) > (In reply to Jan Ziak from comment #6) > > (In reply to Alex Deucher from comment #3) > > > Please attach your xorg log and dmesg output. > > > > Upstream Linux kernel does not support variable mclk on R9 390. I enabled > > variable mclk by patching some code in drivers/gpu/drm/amd/amdgpu/ (mostly > > ci_dpm.c). > > What patch(es) did you use? I added a function based on ci_dpm_force_state_mclk() in ci_dpm.c. mask is 0x3. ---- static int ci_dpm_force_state_mclk_mask(struct amdgpu_device *adev, u32 mask) { struct ci_power_info *pi = ci_get_pi(adev); if (!pi->mclk_dpm_key_disabled) { PPSMC_Result smc_result = amdgpu_ci_send_msg_to_smc_with_parameter(adev, PPSMC_MSG_MCLKDPM_SetEnabledMask, mask); printk("[atomsymbol] %s:%d: mask=0x%X, ok=%d\n", __FUNCTION__, __LINE__, mask, smc_result == PPSMC_Result_OK); if (smc_result != PPSMC_Result_OK) return -EINVAL; } return 0; } ---- /sys/class/drm/card?/device/power_dpm_force_performance_level is set to "auto".
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/drm/amd/issues/720.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.