summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2023-03-01 15:06:28 +0100
committerEric Engestrom <eric@engestrom.ch>2023-03-08 18:00:14 +0000
commit7aa1f07ddcf2f8f15bd8e58a509c0209c2e943ed (patch)
treea454042626dc8c6d34592602b39bf5f80bf19090
parentd85d54db75324356356b8d5acc5619d935fd1f1a (diff)
downloadmesa-7aa1f07ddcf2f8f15bd8e58a509c0209c2e943ed.tar.gz
amd,ac/rgp: fix SQTT memory types
This crashed on Steam Deck because the memory type is LPDDR5 and it wasn't not handled in the switch. It seems the kernel changed the memory type returned for VanGogh because it used to work. Fixes: aef7ea868fe ("ac/gpu_info: handle LPDDR4 and 5 in ac_memory_ops_per_clock") Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21627> (cherry picked from commit f19fccd9f8c368336a60ecfe94d3ef9565bc26dc)
-rw-r--r--.pick_status.json2
-rw-r--r--src/amd/common/ac_rgp.c18
-rw-r--r--src/amd/common/amd_family.h2
3 files changed, 15 insertions, 7 deletions
diff --git a/.pick_status.json b/.pick_status.json
index 4e63cfb0cd9..2fa70b2d313 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -3649,7 +3649,7 @@
"description": "amd,ac/rgp: fix SQTT memory types",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "aef7ea868fe55f2eb0bcedaeecdc76d54a611106"
},
diff --git a/src/amd/common/ac_rgp.c b/src/amd/common/ac_rgp.c
index d323b4b846a..bbbf985c23d 100644
--- a/src/amd/common/ac_rgp.c
+++ b/src/amd/common/ac_rgp.c
@@ -286,6 +286,7 @@ enum sqtt_memory_type
SQTT_MEMORY_TYPE_DDR2 = 0x2,
SQTT_MEMORY_TYPE_DDR3 = 0x3,
SQTT_MEMORY_TYPE_DDR4 = 0x4,
+ SQTT_MEMORY_TYPE_DDR5 = 0x5,
SQTT_MEMORY_TYPE_GDDR3 = 0x10,
SQTT_MEMORY_TYPE_GDDR4 = 0x11,
SQTT_MEMORY_TYPE_GDDR5 = 0x12,
@@ -375,17 +376,22 @@ static enum sqtt_memory_type ac_vram_type_to_sqtt_memory_type(uint32_t vram_type
return SQTT_MEMORY_TYPE_DDR3;
case AMD_VRAM_TYPE_DDR4:
return SQTT_MEMORY_TYPE_DDR4;
+ case AMD_VRAM_TYPE_DDR5:
+ return SQTT_MEMORY_TYPE_DDR5;
+ case AMD_VRAM_TYPE_GDDR3:
+ return SQTT_MEMORY_TYPE_GDDR3;
+ case AMD_VRAM_TYPE_GDDR4:
+ return SQTT_MEMORY_TYPE_GDDR4;
case AMD_VRAM_TYPE_GDDR5:
return SQTT_MEMORY_TYPE_GDDR5;
- case AMD_VRAM_TYPE_HBM:
- return SQTT_MEMORY_TYPE_HBM;
case AMD_VRAM_TYPE_GDDR6:
return SQTT_MEMORY_TYPE_GDDR6;
- case AMD_VRAM_TYPE_DDR5:
+ case AMD_VRAM_TYPE_HBM:
+ return SQTT_MEMORY_TYPE_HBM;
+ case AMD_VRAM_TYPE_LPDDR4:
+ return SQTT_MEMORY_TYPE_LPDDR4;
+ case AMD_VRAM_TYPE_LPDDR5:
return SQTT_MEMORY_TYPE_LPDDR5;
- case AMD_VRAM_TYPE_GDDR1:
- case AMD_VRAM_TYPE_GDDR3:
- case AMD_VRAM_TYPE_GDDR4:
default:
unreachable("Invalid vram type");
}
diff --git a/src/amd/common/amd_family.h b/src/amd/common/amd_family.h
index fa2852adbed..956af41b854 100644
--- a/src/amd/common/amd_family.h
+++ b/src/amd/common/amd_family.h
@@ -184,6 +184,8 @@ enum amd_vram_type {
AMD_VRAM_TYPE_DDR4,
AMD_VRAM_TYPE_GDDR6,
AMD_VRAM_TYPE_DDR5,
+ AMD_VRAM_TYPE_LPDDR4,
+ AMD_VRAM_TYPE_LPDDR5,
};
const char *ac_get_family_name(enum radeon_family family);