drm/ttm: add ttm_bo_is_reserved
authorMaarten Lankhorst <maarten.lankhorst@canonical.com>
Fri, 12 Oct 2012 14:58:36 +0000 (16:58 +0200)
committerDave Airlie <airlied@redhat.com>
Wed, 7 Nov 2012 00:44:38 +0000 (10:44 +1000)
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/ttm/ttm_bo.c
include/drm/ttm/ttm_bo_api.h

index bf6e4b5..e6bfcfd 100644 (file)
@@ -162,9 +162,9 @@ int ttm_bo_wait_unreserved(struct ttm_buffer_object *bo, bool interruptible)
 {
        if (interruptible) {
                return wait_event_interruptible(bo->event_queue,
-                                              atomic_read(&bo->reserved) == 0);
+                                              !ttm_bo_is_reserved(bo));
        } else {
-               wait_event(bo->event_queue, atomic_read(&bo->reserved) == 0);
+               wait_event(bo->event_queue, !ttm_bo_is_reserved(bo));
                return 0;
        }
 }
@@ -175,7 +175,7 @@ void ttm_bo_add_to_lru(struct ttm_buffer_object *bo)
        struct ttm_bo_device *bdev = bo->bdev;
        struct ttm_mem_type_manager *man;
 
-       BUG_ON(!atomic_read(&bo->reserved));
+       BUG_ON(!ttm_bo_is_reserved(bo));
 
        if (!(bo->mem.placement & TTM_PL_FLAG_NO_EVICT)) {
 
@@ -756,7 +756,7 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, bool interruptible,
                goto out;
        }
 
-       BUG_ON(!atomic_read(&bo->reserved));
+       BUG_ON(!ttm_bo_is_reserved(bo));
 
        evict_mem = bo->mem;
        evict_mem.mm_node = NULL;
@@ -1073,7 +1073,7 @@ int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
        struct ttm_mem_reg mem;
        struct ttm_bo_device *bdev = bo->bdev;
 
-       BUG_ON(!atomic_read(&bo->reserved));
+       BUG_ON(!ttm_bo_is_reserved(bo));
 
        /*
         * FIXME: It's possible to pipeline buffer moves.
@@ -1130,7 +1130,7 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
 {
        int ret;
 
-       BUG_ON(!atomic_read(&bo->reserved));
+       BUG_ON(!ttm_bo_is_reserved(bo));
        /* Check that range is valid */
        if (placement->lpfn || placement->fpfn)
                if (placement->fpfn > placement->lpfn ||
index e8028ad..36e8408 100644 (file)
@@ -736,4 +736,18 @@ extern ssize_t ttm_bo_io(struct ttm_bo_device *bdev, struct file *filp,
 
 extern void ttm_bo_swapout_all(struct ttm_bo_device *bdev);
 
+/**
+ * ttm_bo_is_reserved - return an indication if a ttm buffer object is reserved
+ *
+ * @bo:     The buffer object to check.
+ *
+ * This function returns an indication if a bo is reserved or not, and should
+ * only be used to print an error when it is not from incorrect api usage, since
+ * there's no guarantee that it is the caller that is holding the reservation.
+ */
+static inline bool ttm_bo_is_reserved(struct ttm_buffer_object *bo)
+{
+       return atomic_read(&bo->reserved);
+}
+
 #endif