Kernel 5.19.12 commit 8442bc8426d1264496468066498b196aef5453a7 causes a huge fps drop/performance issue.
Before submitting your bug report:
- Check if your bug has already been reported here.
- No
Otherwise, fill the requested information below.
And please remove anything that doesn't apply to keep things readable
Brief summary of the problem:
When playing a video game in kernel 5.19.12 with a high refresh rate monitor (144 in my case), entire system becomes very laggy and slow, game is also severly limited in fps (normally I get 300-400, but in 5.19.12 its around 80-100, and the system itself feels way below 100fps despite having a 144hz monitor).
Hardware description:
- CPU: AMD Ryzen 9 3900X
- GPU: 0c:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] [1002:73bf] (rev c1)
- System Memory: 64GB DIMM DDR4 Synchronous Unbuffered (Unregistered) 3600 MHz
- Display(s): Asus MG279 and Asus VG279
- Type of Display Connection: Both Display Port
System information:
- Distro name and Version: Arch Linux Rolling
- Kernel version: 5.19.12-zen1-1-zen, 5.19.12-1 both affected
- Custom kernel: N/A
- AMD official driver version: amdgpu
How to reproduce the issue:
Be on kernel 5.19.12 or 5.19.13
Have steam, launch Counter Strike: Global Offensive (game I tested on)
Go into a match, frame rate is much lower than it should be, and whole system feels sluggish and locked to a lower fps. NOTE: my monitors are both 144hz. I do not have a 60hz monitor to test on to see if this "reduced fps feel" goes to 60 or lower. What I can confirm is that there is a massive performance/fps hit, and it directly comes from this commit. Below I will add my git bisect data. Something interesting to note is that I saw a lot of amd gpu driver changes this release, and the one commit before mine tinkered with something sienna cichlid-related. My GPU is a part of sienna cichlid, so I initially thought that commit was the issue, as my laptop with an Nvidia gpu did not have this issue. Compiling all of 5.19.12's changes with the offending commit's changes reverted also worked, so I am 100% certain that this is the culprit. I would be very glad to contribute my fix (effectively a rollback of the offending commit) to the kernel, but I am very new to this and spent a while figuring out git bisect
Thanks,
Amaan Q.
Log files (for system lockups / game freezes / crashes)
- Git Bisect Log
Your branch is up to date with 'origin/master'. status: waiting for both good and bad commits
Bisecting: 52 revisions left to test after this (roughly 6 steps) [0559d91ee3a2cd81b15ad5cd507539d6da867f88] net: sched: fix possible refcount leak in tc_new_tfilter()
Bisecting: 26 revisions left to test after this (roughly 5 steps) [8836e42e8b004ab837172f28c517632b718b80ef] drm/amd/display: Reduce number of arguments of dml31's CalculateWatermarksAndDRAMSpeedChangeSupport()
Bisecting: 12 revisions left to test after this (roughly 4 steps) [2f092fd2ce24eebb6f56f4b558654ba2fb4e5fe8] block: call blk_mq_exit_queue from disk_release for never added disks
Bisecting: 6 revisions left to test after this (roughly 3 steps) [a5de08013672d771ba878c09e97f83ec3989b30a] gpio: ixp4xx: Make irqchip immutable
Bisecting: 3 revisions left to test after this (roughly 2 steps) [386ca6720b34072f4c613dbef660ed23810de17a] drm/amdgpu: change the alignment size of TMR BO to 1M
Bisecting: 0 revisions left to test after this (roughly 1 step) [8442bc8426d1264496468066498b196aef5453a7] drm/amdgpu: use dirty framebuffer helper
Bisecting: 0 revisions left to test after this (roughly 0 steps) [444574f828cd852c715e67dae5e92352297a69f4] drm/amd/pm: disable BACO entry/exit completely on several sienna cichlid cards
8442bc8426d1264496468066498b196aef5453a7 is the first bad commit commit 8442bc8426d1264496468066498b196aef5453a7 Author: Hamza Mahfooz hamza.mahfooz@amd.com Date: Tue Sep 6 15:01:49 2022 -0400
drm/amdgpu: use dirty framebuffer helper
[ Upstream commit 66f99628eb24409cb8feb5061f78283c8b65f820 ]
Currently, we aren't handling DRM_IOCTL_MODE_DIRTYFB. So, use
drm_atomic_helper_dirtyfb() as the dirty callback in the amdgpu_fb_funcs
struct.
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 ++ 1 file changed, 2 insertions(+)