diff options
| author | Thomas Zimmermann <tzimmermann@suse.de> | 2020-11-03 10:30:11 +0100 | 
|---|---|---|
| committer | Thomas Zimmermann <tzimmermann@suse.de> | 2020-11-09 09:19:24 +0100 | 
| commit | 49a3f51dfeeecb52c5aa28c5cb9592fe5e39bf95 (patch) | |
| tree | 60399216163b2213ccd45bdddc2dde62f6e0002d /drivers/gpu/drm/tiny/cirrus.c | |
| parent | 43676605f890b218e551f396a55dbaea7799acb4 (diff) | |
drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends
This patch replaces the vmap/vunmap's use of raw pointers in GEM object
functions with instances of struct dma_buf_map. GEM backends are
converted as well. For most of them, this simply changes the returned type.
TTM-based drivers now return information about the location of the memory,
either system or I/O memory. GEM VRAM helpers and qxl now use ttm_bo_vmap()
et al. Amdgpu, nouveau and radeon use drm_gem_ttm_vmap() et al instead of
implementing their own vmap callbacks.
v7:
	* init QXL cursor to mapped BO buffer (kernel test robot)
v5:
	* update vkms after switch to shmem
v4:
	* use ttm_bo_vmap(), drm_gem_ttm_vmap(), et al. (Daniel, Christian)
	* fix a trailing { in drm_gem_vmap()
	* remove several empty functions instead of converting them (Daniel)
	* comment uses of raw pointers with a TODO (Daniel)
	* TODO list: convert more helpers to use struct dma_buf_map
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Christian König <christian.koenig@amd.com>
Tested-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20201103093015.1063-7-tzimmermann@suse.de
Diffstat (limited to 'drivers/gpu/drm/tiny/cirrus.c')
| -rw-r--r-- | drivers/gpu/drm/tiny/cirrus.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c index 4f399804efa0..561c49d8657a 100644 --- a/drivers/gpu/drm/tiny/cirrus.c +++ b/drivers/gpu/drm/tiny/cirrus.c @@ -17,6 +17,7 @@   */  #include <linux/console.h> +#include <linux/dma-buf-map.h>  #include <linux/module.h>  #include <linux/pci.h> @@ -314,6 +315,7 @@ static int cirrus_fb_blit_rect(struct drm_framebuffer *fb,  			       struct drm_rect *rect)  {  	struct cirrus_device *cirrus = to_cirrus(fb->dev); +	struct dma_buf_map map;  	void *vmap;  	int idx, ret; @@ -321,10 +323,10 @@ static int cirrus_fb_blit_rect(struct drm_framebuffer *fb,  	if (!drm_dev_enter(&cirrus->dev, &idx))  		goto out; -	ret = -ENOMEM; -	vmap = drm_gem_shmem_vmap(fb->obj[0]); -	if (!vmap) +	ret = drm_gem_shmem_vmap(fb->obj[0], &map); +	if (ret)  		goto out_dev_exit; +	vmap = map.vaddr; /* TODO: Use mapping abstraction properly */  	if (cirrus->cpp == fb->format->cpp[0])  		drm_fb_memcpy_dstclip(cirrus->vram, @@ -343,7 +345,7 @@ static int cirrus_fb_blit_rect(struct drm_framebuffer *fb,  	else  		WARN_ON_ONCE("cpp mismatch"); -	drm_gem_shmem_vunmap(fb->obj[0], vmap); +	drm_gem_shmem_vunmap(fb->obj[0], &map);  	ret = 0;  out_dev_exit: | 
