diff mbox series

[1/3] drm/udl: Remove flags field from struct udl_gem_object

Message ID 20191028084549.30243-2-tzimmermann@suse.de (mailing list archive)
State New, archived
Headers show
Series drm/udl: Convert to SHMEM | expand

Commit Message

Thomas Zimmermann Oct. 28, 2019, 8:45 a.m. UTC
The flags field in struct udl_gem control mapping parameters: cached
access for local buffers, write-combined access for imported buffers.

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

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/udl/udl_dmabuf.c |  1 -
 drivers/gpu/drm/udl/udl_drv.h    |  4 ----
 drivers/gpu/drm/udl/udl_gem.c    | 27 +++++++--------------------
 3 files changed, 7 insertions(+), 25 deletions(-)

Comments

Gerd Hoffmann Nov. 5, 2019, 11:05 a.m. UTC | #1
On Mon, Oct 28, 2019 at 09:45:47AM +0100, Thomas Zimmermann wrote:
> The flags field in struct udl_gem control mapping parameters: cached
> access for local buffers, write-combined access for imported buffers.
> 
> We can drop the field and distingush both cases by testing whether
> struct drm_gem_object.import_attach is NULL.

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/gpu/drm/udl/udl_dmabuf.c |  1 -
>  drivers/gpu/drm/udl/udl_drv.h    |  4 ----
>  drivers/gpu/drm/udl/udl_gem.c    | 27 +++++++--------------------
>  3 files changed, 7 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/udl/udl_dmabuf.c b/drivers/gpu/drm/udl/udl_dmabuf.c
> index 3108e9a9234b..b1c1ee64de59 100644
> --- a/drivers/gpu/drm/udl/udl_dmabuf.c
> +++ b/drivers/gpu/drm/udl/udl_dmabuf.c
> @@ -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;
>  
> diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
> index 12a970fd9a87..e1306a51903c 100644
> --- a/drivers/gpu/drm/udl/udl_drv.h
> +++ b/drivers/gpu/drm/udl/udl_drv.h
> @@ -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)
> diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c
> index b23a5c2fcd80..7d3c1b73ea02 100644
> --- a/drivers/gpu/drm/udl/udl_gem.c
> +++ b/drivers/gpu/drm/udl/udl_gem.c
> @@ -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;
> -- 
> 2.23.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/udl/udl_dmabuf.c b/drivers/gpu/drm/udl/udl_dmabuf.c
index 3108e9a9234b..b1c1ee64de59 100644
--- a/drivers/gpu/drm/udl/udl_dmabuf.c
+++ b/drivers/gpu/drm/udl/udl_dmabuf.c
@@ -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;
 
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 12a970fd9a87..e1306a51903c 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -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)
diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c
index b23a5c2fcd80..7d3c1b73ea02 100644
--- a/drivers/gpu/drm/udl/udl_gem.c
+++ b/drivers/gpu/drm/udl/udl_gem.c
@@ -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;