*/
 
 #include "amdgpu.h"
+#define MAX_KIQ_REG_WAIT       100000
 
 int amdgpu_allocate_static_csa(struct amdgpu_device *adev)
 {
        amdgpu_ring_commit(ring);
        mutex_unlock(&kiq->ring_mutex);
 
-       r = dma_fence_wait(f, false);
-       if (r)
-               DRM_ERROR("wait for kiq fence error: %ld.\n", r);
+       r = dma_fence_wait_timeout(f, false, msecs_to_jiffies(MAX_KIQ_REG_WAIT));
        dma_fence_put(f);
+       if (r < 1) {
+               DRM_ERROR("wait for kiq fence error: %ld.\n", r);
+               return ~0;
+       }
 
        val = adev->wb.wb[adev->virt.reg_val_offs];
 
        amdgpu_ring_commit(ring);
        mutex_unlock(&kiq->ring_mutex);
 
-       r = dma_fence_wait(f, false);
-       if (r)
+       r = dma_fence_wait_timeout(f, false, msecs_to_jiffies(MAX_KIQ_REG_WAIT));
+       if (r < 1)
                DRM_ERROR("wait for kiq fence error: %ld.\n", r);
        dma_fence_put(f);
 }