[BISECTED] RX 6600 XT (And possibly other GPUs) no longer works on 6.11+
Upon updating to 6.11, my RX 6600 XT no longer boots properly, as in there is no display out.
Looking through the logs I found that the following error was repeatedly being logged:
amdgpu 0000:08:00.0: [drm] Cannot find any crtc or sizes
After a bit of digging around I could not find a solution for this however downgrading to 6.10 worked as a temporary solution. Speaking with members on the Arch Linux forum, I tried a build of 6.12rc1, which also had the same error - albeit with less errors.
Bisecting the kernel led me to find that this commit: drm/amd/display: Add misc DC changes for DCN401
was causing the issue.
Further narrowing it down, found that the line in the function bios_parser_get_vram_info
, was failing for these older cards.
Analysing the function, it appears that the newly merged code for initialising DCN401, more specifically to get VRAM information, was incorrectly running in this function and returning a BP_RESULT_OK
result, which would result in the above line failing to test against it.
Removing the added result != BP_RESULT_OK
test in that line resolves the issue and allows the GPU to properly initialise.
This was tested against master and the latest 6.11.2 stable release.
I believe in order to fix this, a proper generational check would have to be added in this function as it seems checking for umc_info
is not working, or at least not working all of the time.
Attached are kernel logs of 6.11 and 6.12, as well as a patch to revert that change. I have tested this patch for the last week and can confirm no issues as a result, only that it fixes the issue.
Here is the patch in case anyone would like to view it without downloading. I would be more than happy to submit this to the mailing list for review if everything looks okay.
From 6e4b5c4a70b81ff10546ad768e35b66fe693a46a Mon Sep 17 00:00:00 2001
From: Hamish Claxton <hamishclaxton@gmail.com>
Date: Sun, 6 Oct 2024 09:36:50 +1000
Subject: [PATCH] drm/amd/display: Fix getting vram info for older GPUs
Signed-off-by: Hamish Claxton <hamishclaxton@gmail.com>
---
drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
index 0d8498ab9b23..242faa079158 100644
--- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
+++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
@@ -3148,7 +3148,7 @@ static enum bp_result bios_parser_get_vram_info(
}
}
- if (result != BP_RESULT_OK && info && DATA_TABLES(vram_info)) {
+ if (info && DATA_TABLES(vram_info)) {
header = GET_IMAGE(struct atom_common_table_header,
DATA_TABLES(vram_info));
--
2.46.2
Hardware description:
- CPU: Intel Core i5-10500
- GPU: AMD Radeon Sapphire Nitro RX 6600 XT,AMD Radeon ASRock RX 6950 XT OC Formula 16GB, Intel UHD Graphics 630
- System Memory: 64GB
- Display(s): AOC AGON AG493UCX2
- Type of Display Connection: HDMI (RX 6600 XT), DP (RX 6950 XT), HDMI (UHD 630)
System information:
- Distro name and Version: Arch Linux
- Kernel version: 6.11+
- Custom kernel: N/A
- AMD official driver version: N/A
Log files
0001-drm-amd-display-Fix-getting-vram-info-for-older-GPUs.patch 6-12.log 6-11.log