drm/amdgpu: Fix KFD oversubscription by tracking queues correctly
authorJay Cornwall <Jay.Cornwall@amd.com>
Fri, 14 Jul 2017 01:21:53 +0000 (20:21 -0500)
committerOded Gabbay <oded.gabbay@gmail.com>
Fri, 14 Jul 2017 01:21:53 +0000 (20:21 -0500)
The number of compute queues available to the KFD was erroneously
calculated as 64. Only the first MEC can execute compute queues and
it has 32 queue slots.

This caused the oversubscription limit to be calculated incorrectly,
leading to a missing chained runlist command at the end of an
oversubscribed runlist.

v2: Remove unused num_mec field to avoid duplicate logic
v3: Separate num_mec removal into separate patches

Change-Id: I9e7bba2cc1928b624e3eeb1edb06fdb602e5294f
Signed-off-by: Jay Cornwall <Jay.Cornwall@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c

index 5f8ada1d872bcc022ed88920b33c7f14eea0486b..76ddedcd1e65c1b9d2a672b4ad30ecf28f25aa8c 100644 (file)
@@ -122,7 +122,7 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
 
                /* According to linux/bitmap.h we shouldn't use bitmap_clear if
                 * nbits is not compile time constant */
-               last_valid_bit = adev->gfx.mec.num_mec
+               last_valid_bit = 1 /* only first MEC can have compute queues */
                                * adev->gfx.mec.num_pipe_per_mec
                                * adev->gfx.mec.num_queue_per_pipe;
                for (i = last_valid_bit; i < KGD_MAX_QUEUES; ++i)