amd,ac/rgp: fix SQTT memory types
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 1 Mar 2023 14:06:28 +0000 (15:06 +0100)
committerMarge Bot <emma+marge@anholt.net>
Thu, 2 Mar 2023 07:54:35 +0000 (07:54 +0000)
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>

src/amd/common/ac_rgp.c
src/amd/common/amd_family.h

index ca42f67..41441d4 100644 (file)
@@ -288,6 +288,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,
@@ -379,17 +380,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");
    }
index 20c38f4..da78b87 100644 (file)
@@ -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);