drm/radeon: rename radeon_cs_reloc to radeon_bo_list
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / radeon / radeon_object.c
index 7f3b1e1b05b0995142d2a9383c0e5f1dd98e4876..4ab07473bb28caa26585c8290720efbf6971d6a1 100644 (file)
@@ -179,9 +179,7 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
         * improve fragmentation quality.
         * 512kb was measured as the most optimal number.
         */
-       if (!((rbo->flags & RADEON_GEM_CPU_ACCESS) &&
-             (rbo->placements[i].flags & TTM_PL_FLAG_VRAM)) &&
-           rbo->tbo.mem.size > 512 * 1024) {
+       if (rbo->tbo.mem.size > 512 * 1024) {
                for (i = 0; i < c; i++) {
                        rbo->placements[i].flags |= TTM_PL_FLAG_TOPDOWN;
                }
@@ -504,7 +502,7 @@ int radeon_bo_list_validate(struct radeon_device *rdev,
                            struct ww_acquire_ctx *ticket,
                            struct list_head *head, int ring)
 {
-       struct radeon_cs_reloc *lobj;
+       struct radeon_bo_list *lobj;
        struct radeon_bo *bo;
        int r;
        u64 bytes_moved = 0, initial_bytes_moved;
@@ -523,6 +521,9 @@ int radeon_bo_list_validate(struct radeon_device *rdev,
                        u32 current_domain =
                                radeon_mem_type_to_domain(bo->tbo.mem.mem_type);
 
+                       WARN_ONCE(bo->gem_base.dumb,
+                                 "GPU use of dumb buffer is illegal.\n");
+
                        /* Check if this buffer will be moved and don't move it
                         * if we have moved too many buffers for this IB already.
                         *
@@ -820,3 +821,22 @@ int radeon_bo_wait(struct radeon_bo *bo, u32 *mem_type, bool no_wait)
        ttm_bo_unreserve(&bo->tbo);
        return r;
 }
+
+/**
+ * radeon_bo_fence - add fence to buffer object
+ *
+ * @bo: buffer object in question
+ * @fence: fence to add
+ * @shared: true if fence should be added shared
+ *
+ */
+void radeon_bo_fence(struct radeon_bo *bo, struct radeon_fence *fence,
+                     bool shared)
+{
+       struct reservation_object *resv = bo->tbo.resv;
+
+       if (shared)
+               reservation_object_add_shared_fence(resv, &fence->base);
+       else
+               reservation_object_add_excl_fence(resv, &fence->base);
+}