summaryrefslogtreecommitdiff
path: root/linux-core/drm_bo.c
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2007-06-13 15:38:59 +0200
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2007-06-13 15:38:59 +0200
commit62082ab3e63f6f474655da98b710e453b4124ed1 (patch)
treee14a5e4599d79c451a6fb480f5d1da993b934791 /linux-core/drm_bo.c
parent5156f1c897142171e78d0ea2c45a3aecb581fffa (diff)
Make sure we read fence->signaled while spinlocked.
Diffstat (limited to 'linux-core/drm_bo.c')
-rw-r--r--linux-core/drm_bo.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/linux-core/drm_bo.c b/linux-core/drm_bo.c
index bcb5c95d..1c0eebd0 100644
--- a/linux-core/drm_bo.c
+++ b/linux-core/drm_bo.c
@@ -268,7 +268,7 @@ int drm_bo_wait(drm_buffer_object_t * bo, int lazy, int ignore_signals,
if (fence) {
drm_device_t *dev = bo->dev;
- if (drm_fence_object_signaled(fence, bo->fence_type)) {
+ if (drm_fence_object_signaled(dev, fence, bo->fence_type, 0)) {
drm_fence_usage_deref_unlocked(dev, fence);
bo->fence = NULL;
return 0;
@@ -337,7 +337,8 @@ static void drm_bo_cleanup_refs(drm_buffer_object_t * bo, int remove_all)
DRM_FLAG_MASKED(bo->priv_flags, 0, _DRM_BO_FLAG_UNFENCED);
- if (bo->fence && drm_fence_object_signaled(bo->fence, bo->fence_type)) {
+ if (bo->fence && drm_fence_object_signaled(dev, bo->fence,
+ bo->fence_type, 0)) {
drm_fence_usage_deref_unlocked(dev, bo->fence);
bo->fence = NULL;
}
@@ -944,7 +945,7 @@ static int drm_bo_quick_busy(drm_buffer_object_t * bo)
BUG_ON(bo->priv_flags & _DRM_BO_FLAG_UNFENCED);
if (fence) {
drm_device_t *dev = bo->dev;
- if (drm_fence_object_signaled(fence, bo->fence_type)) {
+ if (drm_fence_object_signaled(dev, fence, bo->fence_type, 0)) {
drm_fence_usage_deref_unlocked(dev, fence);
bo->fence = NULL;
return 0;
@@ -966,13 +967,13 @@ static int drm_bo_busy(drm_buffer_object_t * bo)
BUG_ON(bo->priv_flags & _DRM_BO_FLAG_UNFENCED);
if (fence) {
drm_device_t *dev = bo->dev;
- if (drm_fence_object_signaled(fence, bo->fence_type)) {
+ if (drm_fence_object_signaled(dev, fence, bo->fence_type, 0)) {
drm_fence_usage_deref_unlocked(dev, fence);
bo->fence = NULL;
return 0;
}
drm_fence_object_flush(dev, fence, DRM_FENCE_TYPE_EXE);
- if (drm_fence_object_signaled(fence, bo->fence_type)) {
+ if (drm_fence_object_signaled(dev, fence, bo->fence_type, 0)) {
drm_fence_usage_deref_unlocked(dev, fence);
bo->fence = NULL;
return 0;