]> Git Repo - linux.git/commitdiff
drm/amdkfd: update the cwsr area size for gfx950
authorLe Ma <[email protected]>
Wed, 7 Aug 2024 09:33:00 +0000 (17:33 +0800)
committerAlex Deucher <[email protected]>
Tue, 10 Dec 2024 15:26:51 +0000 (10:26 -0500)
Update cwsr area size for gfx950 to fit the new user queue buffer validation.
The size of LDS calculation is referred from gfx950 thunk implementation.

Signed-off-by: Le Ma <[email protected]>
Acked-by: Hawking Zhang <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
drivers/gpu/drm/amd/amdkfd/kfd_queue.c

index ad29634f8b44caed8757c3d5182f924935a31e32..ecccd7adbab4d266b3bfc85d934f5a1126809c01 100644 (file)
@@ -394,7 +394,8 @@ static u32 kfd_get_vgpr_size_per_cu(u32 gfxv)
 
        if ((gfxv / 100 * 100) == 90400 ||      /* GFX_VERSION_AQUA_VANJARAM */
            gfxv == 90010 ||                    /* GFX_VERSION_ALDEBARAN */
-           gfxv == 90008)                      /* GFX_VERSION_ARCTURUS */
+           gfxv == 90008 ||                    /* GFX_VERSION_ARCTURUS */
+           gfxv == 90500)
                vgpr_size = 0x80000;
        else if (gfxv == 110000 ||              /* GFX_VERSION_PLUM_BONITO */
                 gfxv == 110001 ||              /* GFX_VERSION_WHEAT_NAS */
@@ -405,9 +406,10 @@ static u32 kfd_get_vgpr_size_per_cu(u32 gfxv)
        return vgpr_size;
 }
 
-#define WG_CONTEXT_DATA_SIZE_PER_CU(gfxv)      \
+#define WG_CONTEXT_DATA_SIZE_PER_CU(gfxv, props)       \
        (kfd_get_vgpr_size_per_cu(gfxv) + SGPR_SIZE_PER_CU +\
-        LDS_SIZE_PER_CU + HWREG_SIZE_PER_CU)
+        (((gfxv) == 90500) ? (props->lds_size_in_kb << 10) : LDS_SIZE_PER_CU) +\
+        HWREG_SIZE_PER_CU)
 
 #define CNTL_STACK_BYTES_PER_WAVE(gfxv)        \
        ((gfxv) >= 100100 ? 12 : 8)     /* GFX_VERSION_NAVI10*/
@@ -431,7 +433,7 @@ void kfd_queue_ctx_save_restore_size(struct kfd_topology_device *dev)
                    min(cu_num * 40, props->array_count / props->simd_arrays_per_engine * 512)
                    : cu_num * 32;
 
-       wg_data_size = ALIGN(cu_num * WG_CONTEXT_DATA_SIZE_PER_CU(gfxv), PAGE_SIZE);
+       wg_data_size = ALIGN(cu_num * WG_CONTEXT_DATA_SIZE_PER_CU(gfxv, props), PAGE_SIZE);
        ctl_stack_size = wave_num * CNTL_STACK_BYTES_PER_WAVE(gfxv) + 8;
        ctl_stack_size = ALIGN(SIZEOF_HSA_USER_CONTEXT_SAVE_AREA_HEADER + ctl_stack_size,
                               PAGE_SIZE);
This page took 0.046381 seconds and 4 git commands to generate.