Check if ring is not a mes queue before freeing the wb entry,
because we only allocate a wb entry when it's not a mes queue.
Signed-off-by: Jesse Zhang <jesse.zhang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
        r = amdgpu_ring_alloc(ring, 20);
        if (r) {
                DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r);
-               amdgpu_device_wb_free(adev, index);
+               if (!ring->is_mes_queue)
+                       amdgpu_device_wb_free(adev, index);
                return r;
        }
 
 
        r = amdgpu_ring_alloc(ring, 20);
        if (r) {
                DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r);
-               amdgpu_device_wb_free(adev, index);
+               if (!ring->is_mes_queue)
+                       amdgpu_device_wb_free(adev, index);
                return r;
        }
 
 
        r = amdgpu_ring_alloc(ring, 5);
        if (r) {
                DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r);
-               amdgpu_device_wb_free(adev, index);
+               if (!ring->is_mes_queue)
+                       amdgpu_device_wb_free(adev, index);
                return r;
        }