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:
parent
60d15f551a
commit
cecc6b63a5
1 changed files with 1 additions and 10 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue