drm/amdkfd: bug fix for out of bounds mem on gpu cache filling info
authorAlex Sierra <alex.sierra@amd.com>
Thu, 24 Oct 2019 18:14:31 +0000 (13:14 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 30 Oct 2019 15:06:51 +0000 (11:06 -0400)
The bitmap in cu_info structure is defined as a 4x4 size array. In
Acturus, this matrix is initialized as a 4x2. Based on the 8 shaders.
In the gpu cache filling initialization, the access to the bitmap matrix
was done as an 8x1 instead of 4x2. Causing an out of bounds memory
access error.
Due to this, the number of GPU cache entries was inconsistent.

Signed-off-by: Alex Sierra <alex.sierra@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_crat.c

index 0c327e0fc0f7d80d1543dd4e2b52995692734aeb..de9f68d5c31278ea80e3456716cebd789bd0d54a 100644 (file)
@@ -710,7 +710,7 @@ static int kfd_fill_gpu_cache_info(struct kfd_dev *kdev,
                                                pcache_info,
                                                cu_info,
                                                mem_available,
-                                               cu_info->cu_bitmap[i][j],
+                                               cu_info->cu_bitmap[i % 4][j + i / 4],
                                                ct,
                                                cu_processor_id,
                                                k);