drm/radeon/r600: use fence->timeout directly
Fixes fence timeouts on r6xx/r7xx. Noticed by taiu on IRC. Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
This commit is contained in:
committed by
Dave Airlie
parent
60d15f551a
commit
cecc6b63a5
@@ -171,17 +171,8 @@ bool radeon_fence_signaled(struct radeon_fence *fence)
|
|||||||
int r600_fence_wait(struct radeon_fence *fence, bool intr, bool lazy)
|
int r600_fence_wait(struct radeon_fence *fence, bool intr, bool lazy)
|
||||||
{
|
{
|
||||||
struct radeon_device *rdev;
|
struct radeon_device *rdev;
|
||||||
unsigned long cur_jiffies;
|
|
||||||
unsigned long timeout;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
cur_jiffies = jiffies;
|
|
||||||
timeout = HZ / 100;
|
|
||||||
|
|
||||||
if (time_after(fence->timeout, cur_jiffies)) {
|
|
||||||
timeout = fence->timeout - cur_jiffies;
|
|
||||||
}
|
|
||||||
|
|
||||||
rdev = fence->rdev;
|
rdev = fence->rdev;
|
||||||
|
|
||||||
__set_current_state(intr ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE);
|
__set_current_state(intr ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE);
|
||||||
@@ -190,7 +181,7 @@ int r600_fence_wait(struct radeon_fence *fence, bool intr, bool lazy)
|
|||||||
if (radeon_fence_signaled(fence))
|
if (radeon_fence_signaled(fence))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (time_after_eq(jiffies, timeout)) {
|
if (time_after_eq(jiffies, fence->timeout)) {
|
||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user