drm/ttm: allow fence to be added as shared
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / radeon / radeon_cs.c
index bd328cb6fa61abef16753b08f1f1bbd22afec235..cd517ab936085c55eda7c14324c5604e35ec4883 100644 (file)
@@ -183,6 +183,7 @@ static int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
                }
 
                p->relocs[i].tv.bo = &p->relocs[i].robj->tbo;
+               p->relocs[i].tv.shared = false;
                p->relocs[i].handle = r->handle;
 
                radeon_cs_buckets_add(&buckets, &p->relocs[i].tv.head,
@@ -253,11 +254,17 @@ static void radeon_cs_sync_rings(struct radeon_cs_parser *p)
        int i;
 
        for (i = 0; i < p->nrelocs; i++) {
+               struct reservation_object *resv;
+               struct fence *fence;
+
                if (!p->relocs[i].robj)
                        continue;
 
+               resv = p->relocs[i].robj->tbo.resv;
+               fence = reservation_object_get_excl(resv);
+
                radeon_semaphore_sync_to(p->ib.semaphore,
-                                        p->relocs[i].robj->tbo.sync_obj);
+                                        (struct radeon_fence *)fence);
        }
 }
 
@@ -427,7 +434,7 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error, bo
 
                ttm_eu_fence_buffer_objects(&parser->ticket,
                                            &parser->validated,
-                                           parser->ib.fence);
+                                           &parser->ib.fence->base);
        } else if (backoff) {
                ttm_eu_backoff_reservation(&parser->ticket,
                                           &parser->validated);