]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpu/drm/etnaviv/etnaviv_gem.c
Merge branches 'pm-core', 'pm-qos', 'pm-domains' and 'pm-opp'
[linux.git] / drivers / gpu / drm / etnaviv / etnaviv_gem.c
index 0370b842d9cc20c2fdae37406c82a9546106e69b..aa6e35ddc87f5b5596a5f318ad7d2c5d7098449c 100644 (file)
@@ -202,15 +202,14 @@ int etnaviv_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
        }
 
        /* We don't use vmf->pgoff since that has the fake offset: */
-       pgoff = ((unsigned long)vmf->virtual_address -
-                       vma->vm_start) >> PAGE_SHIFT;
+       pgoff = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
 
        page = pages[pgoff];
 
-       VERB("Inserting %p pfn %lx, pa %lx", vmf->virtual_address,
+       VERB("Inserting %p pfn %lx, pa %lx", (void *)vmf->address,
             page_to_pfn(page), page_to_pfn(page) << PAGE_SHIFT);
 
-       ret = vm_insert_page(vma, (unsigned long)vmf->virtual_address, page);
+       ret = vm_insert_page(vma, vmf->address, page);
 
 out:
        switch (ret) {
@@ -409,20 +408,16 @@ int etnaviv_gem_cpu_prep(struct drm_gem_object *obj, u32 op,
        struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
        struct drm_device *dev = obj->dev;
        bool write = !!(op & ETNA_PREP_WRITE);
-       int ret;
-
-       if (op & ETNA_PREP_NOSYNC) {
-               if (!reservation_object_test_signaled_rcu(etnaviv_obj->resv,
-                                                         write))
-                       return -EBUSY;
-       } else {
-               unsigned long remain = etnaviv_timeout_to_jiffies(timeout);
+       unsigned long remain =
+               op & ETNA_PREP_NOSYNC ? 0 : etnaviv_timeout_to_jiffies(timeout);
+       long lret;
 
-               ret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
-                                                         write, true, remain);
-               if (ret <= 0)
-                       return ret == 0 ? -ETIMEDOUT : ret;
-       }
+       lret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
+                                                  write, true, remain);
+       if (lret < 0)
+               return lret;
+       else if (lret == 0)
+               return remain == 0 ? -EBUSY : -ETIMEDOUT;
 
        if (etnaviv_obj->flags & ETNA_BO_CACHED) {
                if (!etnaviv_obj->sgt) {
@@ -470,10 +465,10 @@ int etnaviv_gem_wait_bo(struct etnaviv_gpu *gpu, struct drm_gem_object *obj,
 }
 
 #ifdef CONFIG_DEBUG_FS
-static void etnaviv_gem_describe_fence(struct fence *fence,
+static void etnaviv_gem_describe_fence(struct dma_fence *fence,
        const char *type, struct seq_file *m)
 {
-       if (!test_bit(FENCE_FLAG_SIGNALED_BIT, &fence->flags))
+       if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags))
                seq_printf(m, "\t%9s: %s %s seq %u\n",
                           type,
                           fence->ops->get_driver_name(fence),
@@ -486,12 +481,12 @@ static void etnaviv_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
        struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
        struct reservation_object *robj = etnaviv_obj->resv;
        struct reservation_object_list *fobj;
-       struct fence *fence;
+       struct dma_fence *fence;
        unsigned long off = drm_vma_node_start(&obj->vma_node);
 
        seq_printf(m, "%08x: %c %2d (%2d) %08lx %p %zd\n",
                        etnaviv_obj->flags, is_active(etnaviv_obj) ? 'A' : 'I',
-                       obj->name, obj->refcount.refcount.counter,
+                       obj->name, kref_read(&obj->refcount),
                        off, etnaviv_obj->vaddr, obj->size);
 
        rcu_read_lock();
@@ -763,7 +758,7 @@ static struct page **etnaviv_gem_userptr_do_get_pages(
        down_read(&mm->mmap_sem);
        while (pinned < npages) {
                ret = get_user_pages_remote(task, mm, ptr, npages - pinned,
-                                           flags, pvec + pinned, NULL);
+                                           flags, pvec + pinned, NULL, NULL);
                if (ret < 0)
                        break;