diff options
author | Thomas Hellstrom <thellstrom@vmware.com> | 2009-06-17 06:29:55 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-06-18 19:01:02 -0400 |
commit | 78ecf091aa592a9e160ebbbfa5873c2bb2e2d0f8 (patch) | |
tree | fec828d3355ccbb45d95cfbbf229c32198eff8c2 /drivers/gpu | |
parent | 9a298b2acd771d8a5c0004d8f8e4156c65b11f6b (diff) |
ttm: Return -ERESTART when a signal interrupts bo eviction.
A bug caused the ttm code to just terminate the wait when a signal
was received while waiting for the GPU to release a buffer object that
was to be evicted.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 1587aeca7bea..b82ba6e5a586 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c | |||
@@ -527,9 +527,12 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, unsigned mem_type, | |||
527 | ret = ttm_bo_wait(bo, false, interruptible, no_wait); | 527 | ret = ttm_bo_wait(bo, false, interruptible, no_wait); |
528 | spin_unlock(&bo->lock); | 528 | spin_unlock(&bo->lock); |
529 | 529 | ||
530 | if (ret && ret != -ERESTART) { | 530 | if (unlikely(ret != 0)) { |
531 | printk(KERN_ERR TTM_PFX "Failed to expire sync object before " | 531 | if (ret != -ERESTART) { |
532 | "buffer eviction.\n"); | 532 | printk(KERN_ERR TTM_PFX |
533 | "Failed to expire sync object before " | ||
534 | "buffer eviction.\n"); | ||
535 | } | ||
533 | goto out; | 536 | goto out; |
534 | } | 537 | } |
535 | 538 | ||