drm/udl: Remove flags field from struct udl_gem_object
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 7 Nov 2019 09:43:04 +0000 (10:43 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Fri, 8 Nov 2019 11:29:47 +0000 (12:29 +0100)
The flags field in struct udl_gem controls mapping parameters: cached
access for local buffers, write-combined access for imported buffers.

We can drop the field and distinguish both cases by testing whether
struct drm_gem_object.import_attach is NULL.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191107094307.19870-2-tzimmermann@suse.de
drivers/gpu/drm/udl/udl_dmabuf.c
drivers/gpu/drm/udl/udl_drv.h
drivers/gpu/drm/udl/udl_gem.c

index 3108e9a..b1c1ee6 100644 (file)
@@ -241,7 +241,6 @@ struct drm_gem_object *udl_gem_prime_import(struct drm_device *dev,
                goto fail_unmap;
 
        uobj->base.import_attach = attach;
-       uobj->flags = UDL_BO_WC;
 
        return &uobj->base;
 
index 12a970f..e1306a5 100644 (file)
@@ -29,9 +29,6 @@ struct drm_mode_create_dumb;
 #define DRIVER_MINOR           0
 #define DRIVER_PATCHLEVEL      1
 
-#define UDL_BO_CACHEABLE               (1 << 0)
-#define UDL_BO_WC              (1 << 1)
-
 struct udl_device;
 
 struct urb_node {
@@ -81,7 +78,6 @@ struct udl_gem_object {
        struct page **pages;
        void *vmapping;
        struct sg_table *sg;
-       unsigned int flags;
 };
 
 #define to_udl_bo(x) container_of(x, struct udl_gem_object, base)
index b23a5c2..7d3c1b7 100644 (file)
@@ -25,7 +25,6 @@ struct udl_gem_object *udl_gem_alloc_object(struct drm_device *dev,
                return NULL;
        }
 
-       obj->flags = UDL_BO_CACHEABLE;
        return obj;
 }
 
@@ -57,23 +56,6 @@ udl_gem_create(struct drm_file *file,
        return 0;
 }
 
-static void update_vm_cache_attr(struct udl_gem_object *obj,
-                                struct vm_area_struct *vma)
-{
-       DRM_DEBUG_KMS("flags = 0x%x\n", obj->flags);
-
-       /* non-cacheable as default. */
-       if (obj->flags & UDL_BO_CACHEABLE) {
-               vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
-       } else if (obj->flags & UDL_BO_WC) {
-               vma->vm_page_prot =
-                       pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
-       } else {
-               vma->vm_page_prot =
-                       pgprot_noncached(vm_get_page_prot(vma->vm_flags));
-       }
-}
-
 int udl_dumb_create(struct drm_file *file,
                    struct drm_device *dev,
                    struct drm_mode_create_dumb *args)
@@ -86,16 +68,21 @@ int udl_dumb_create(struct drm_file *file,
 
 int udl_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
 {
+       struct drm_gem_object *obj;
        int ret;
 
        ret = drm_gem_mmap(filp, vma);
        if (ret)
                return ret;
 
+       obj = vma->vm_private_data;
+
        vma->vm_flags &= ~VM_PFNMAP;
        vma->vm_flags |= VM_MIXEDMAP;
 
-       update_vm_cache_attr(to_udl_bo(vma->vm_private_data), vma);
+       vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
+       if (obj->import_attach)
+               vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
 
        return ret;
 }
@@ -155,7 +142,7 @@ int udl_gem_vmap(struct udl_gem_object *obj)
                        return -ENOMEM;
                return 0;
        }
-               
+
        ret = udl_gem_get_pages(obj);
        if (ret)
                return ret;