drm/amdgpu: drop compute ring timeout setting for non-sriov only (v2)
authorEvan Quan <evan.quan@amd.com>
Tue, 27 Mar 2018 01:53:15 +0000 (09:53 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 3 Apr 2018 17:52:56 +0000 (12:52 -0500)
Sriov still wants these error messags on timeout. So, for sriov
use case, the timeout setting on compute rings is kept.

-v2: clean the code

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Monk Liu <monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c

index 455a81e4c246a3488bd7c8462acbe3a9b9ac5eb8..97449e06a242463dc7a71ca65d63661df2dcde97 100644 (file)
@@ -410,6 +410,7 @@ int amdgpu_fence_driver_start_ring(struct amdgpu_ring *ring,
 int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
                                  unsigned num_hw_submission)
 {
+       long timeout;
        int r;
 
        /* Check that num_hw_submission is a power of two */
@@ -433,11 +434,16 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
 
        /* No need to setup the GPU scheduler for KIQ ring */
        if (ring->funcs->type != AMDGPU_RING_TYPE_KIQ) {
+               /* for non-sriov case, no timeout enforce on compute ring */
+               if ((ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE)
+                               && !amdgpu_sriov_vf(ring->adev))
+                       timeout = MAX_SCHEDULE_TIMEOUT;
+               else
+                       timeout = msecs_to_jiffies(amdgpu_lockup_timeout);
+
                r = drm_sched_init(&ring->sched, &amdgpu_sched_ops,
                                   num_hw_submission, amdgpu_job_hang_limit,
-                                  (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) ?
-                                  MAX_SCHEDULE_TIMEOUT : msecs_to_jiffies(amdgpu_lockup_timeout),
-                                  ring->name);
+                                  timeout, ring->name);
                if (r) {
                        DRM_ERROR("Failed to create scheduler on ring %s.\n",
                                  ring->name);