diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-12-18 16:25:11 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-01-08 03:35:31 -0500 |
commit | e8e89622ed361c46bf90ba4828e685a8b603f7e5 (patch) | |
tree | 76504439c1af179c0aa7377e45b38e5503dffd48 /drivers | |
parent | c75be2592c350035ce871624ebf549b4609aeeab (diff) |
drm/ttm: fix fence locking in ttm_buffer_object_transfer
Noticed while reviewing the fence locking in the radeon pageflip
handler.
v2: Instead of grabbing the bdev->fence_lock in object_transfer just
move the single callsite of that function a few lines, so that it is
protected by the fence_lock. Suggested by Jerome Glisse.
v3: Fix typo in commit message.
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo_util.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c index 9e9c5d2a5c74..d73d6e3e17b2 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c | |||
@@ -654,11 +654,13 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo, | |||
654 | */ | 654 | */ |
655 | 655 | ||
656 | set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags); | 656 | set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags); |
657 | |||
658 | /* ttm_buffer_object_transfer accesses bo->sync_obj */ | ||
659 | ret = ttm_buffer_object_transfer(bo, &ghost_obj); | ||
657 | spin_unlock(&bdev->fence_lock); | 660 | spin_unlock(&bdev->fence_lock); |
658 | if (tmp_obj) | 661 | if (tmp_obj) |
659 | driver->sync_obj_unref(&tmp_obj); | 662 | driver->sync_obj_unref(&tmp_obj); |
660 | 663 | ||
661 | ret = ttm_buffer_object_transfer(bo, &ghost_obj); | ||
662 | if (ret) | 664 | if (ret) |
663 | return ret; | 665 | return ret; |
664 | 666 | ||