[Intel-gfx] [PATCH 01/10] drm: Extract drm_dumb_buffers.c

Chris Wilson chris at chris-wilson.co.uk
Tue Nov 15 10:42:08 UTC 2016


On Mon, Nov 14, 2016 at 12:58:16PM +0100, Daniel Vetter wrote:
> Just code movement, doc cleanup will follow up later.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  drivers/gpu/drm/Makefile            |   3 +-
>  drivers/gpu/drm/drm_crtc.c          | 109 -----------------------------
>  drivers/gpu/drm/drm_crtc_internal.h |  18 ++---
>  drivers/gpu/drm/drm_dumb_buffers.c  | 135 ++++++++++++++++++++++++++++++++++++
>  4 files changed, 147 insertions(+), 118 deletions(-)
>  create mode 100644 drivers/gpu/drm/drm_dumb_buffers.c
> 
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index f217274754d4..adcfc8f922e3 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -15,7 +15,8 @@ drm-y       :=	drm_auth.o drm_bufs.o drm_cache.o \
>  		drm_modeset_lock.o drm_atomic.o drm_bridge.o \
>  		drm_framebuffer.o drm_connector.o drm_blend.o \
>  		drm_encoder.o drm_mode_object.o drm_property.o \
> -		drm_plane.o drm_color_mgmt.o drm_print.o
> +		drm_plane.o drm_color_mgmt.o drm_print.o \
> +		drm_dumb_buffers.o
>  
>  drm-$(CONFIG_COMPAT) += drm_ioc32.o
>  drm-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 4f34d9a34190..0ece33cc0dc6 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -960,115 +960,6 @@ void drm_mode_config_reset(struct drm_device *dev)
>  EXPORT_SYMBOL(drm_mode_config_reset);
>  
>  /**
> - * drm_mode_create_dumb_ioctl - create a dumb backing storage buffer
> - * @dev: DRM device
> - * @data: ioctl data
> - * @file_priv: DRM file info
> - *
> - * This creates a new dumb buffer in the driver's backing storage manager (GEM,
> - * TTM or something else entirely) and returns the resulting buffer handle. This
> - * handle can then be wrapped up into a framebuffer modeset object.
> - *
> - * Note that userspace is not allowed to use such objects for render
> - * acceleration - drivers must create their own private ioctls for such a use
> - * case.
> - *
> - * Called by the user via ioctl.
> - *
> - * Returns:
> - * Zero on success, negative errno on failure.
> - */
> -int drm_mode_create_dumb_ioctl(struct drm_device *dev,
> -			       void *data, struct drm_file *file_priv)
> -{
> -	struct drm_mode_create_dumb *args = data;
> -	u32 cpp, stride, size;
> -
> -	if (!dev->driver->dumb_create)
> -		return -ENOSYS;
> -	if (!args->width || !args->height || !args->bpp)
> -		return -EINVAL;
> -
> -	/* overflow checks for 32bit size calculations */
> -	/* NOTE: DIV_ROUND_UP() can overflow */
> -	cpp = DIV_ROUND_UP(args->bpp, 8);
> -	if (!cpp || cpp > 0xffffffffU / args->width)
> -		return -EINVAL;
> -	stride = cpp * args->width;
> -	if (args->height > 0xffffffffU / stride)
> -		return -EINVAL;
> -
> -	/* test for wrap-around */
> -	size = args->height * stride;
> -	if (PAGE_ALIGN(size) == 0)
> -		return -EINVAL;
> -
> -	/*
> -	 * handle, pitch and size are output parameters. Zero them out to
> -	 * prevent drivers from accidentally using uninitialized data. Since
> -	 * not all existing userspace is clearing these fields properly we
> -	 * cannot reject IOCTL with garbage in them.
> -	 */
> -	args->handle = 0;
> -	args->pitch = 0;
> -	args->size = 0;
> -
> -	return dev->driver->dumb_create(file_priv, dev, args);
> -}
> -
> -/**
> - * drm_mode_mmap_dumb_ioctl - create an mmap offset for a dumb backing storage buffer
> - * @dev: DRM device
> - * @data: ioctl data
> - * @file_priv: DRM file info
> - *
> - * Allocate an offset in the drm device node's address space to be able to
> - * memory map a dumb buffer.
> - *
> - * Called by the user via ioctl.
> - *
> - * Returns:
> - * Zero on success, negative errno on failure.
> - */
> -int drm_mode_mmap_dumb_ioctl(struct drm_device *dev,
> -			     void *data, struct drm_file *file_priv)
> -{
> -	struct drm_mode_map_dumb *args = data;
> -
> -	/* call driver ioctl to get mmap offset */
> -	if (!dev->driver->dumb_map_offset)
> -		return -ENOSYS;
> -
> -	return dev->driver->dumb_map_offset(file_priv, dev, args->handle, &args->offset);
> -}
> -
> -/**
> - * drm_mode_destroy_dumb_ioctl - destroy a dumb backing strage buffer
> - * @dev: DRM device
> - * @data: ioctl data
> - * @file_priv: DRM file info
> - *
> - * This destroys the userspace handle for the given dumb backing storage buffer.
> - * Since buffer objects must be reference counted in the kernel a buffer object
> - * won't be immediately freed if a framebuffer modeset object still uses it.
> - *
> - * Called by the user via ioctl.
> - *
> - * Returns:
> - * Zero on success, negative errno on failure.
> - */
> -int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
> -				void *data, struct drm_file *file_priv)
> -{
> -	struct drm_mode_destroy_dumb *args = data;
> -
> -	if (!dev->driver->dumb_destroy)
> -		return -ENOSYS;
> -
> -	return dev->driver->dumb_destroy(file_priv, dev, args->handle);
> -}
> -
> -/**
>   * drm_mode_config_init - initialize DRM mode_configuration structure
>   * @dev: DRM device
>   *
> diff --git a/drivers/gpu/drm/drm_crtc_internal.h b/drivers/gpu/drm/drm_crtc_internal.h
> index b076ef58635d..3d23a473ec35 100644
> --- a/drivers/gpu/drm/drm_crtc_internal.h
> +++ b/drivers/gpu/drm/drm_crtc_internal.h
> @@ -43,14 +43,6 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
>  
>  void drm_fb_release(struct drm_file *file_priv);
>  
> -/* dumb buffer support IOCTLs */
> -int drm_mode_create_dumb_ioctl(struct drm_device *dev,
> -			       void *data, struct drm_file *file_priv);
> -int drm_mode_mmap_dumb_ioctl(struct drm_device *dev,
> -			     void *data, struct drm_file *file_priv);
> -int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
> -				void *data, struct drm_file *file_priv);
> -
>  /* IOCTLs */
>  int drm_mode_getresources(struct drm_device *dev,
>  			  void *data, struct drm_file *file_priv);
> @@ -59,6 +51,16 @@ int drm_mode_getcrtc(struct drm_device *dev,
>  int drm_mode_setcrtc(struct drm_device *dev,
>  		     void *data, struct drm_file *file_priv);
>  
> +/* drm_dumb_buffers.c */
> +
> +/* IOCTLs */
> +int drm_mode_create_dumb_ioctl(struct drm_device *dev,
> +			       void *data, struct drm_file *file_priv);
> +int drm_mode_mmap_dumb_ioctl(struct drm_device *dev,
> +			     void *data, struct drm_file *file_priv);
> +int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
> +				void *data, struct drm_file *file_priv);
> +
>  /* drm_color_mgmt.c */
>  
>  /* IOCTLs */
> diff --git a/drivers/gpu/drm/drm_dumb_buffers.c b/drivers/gpu/drm/drm_dumb_buffers.c
> new file mode 100644
> index 000000000000..4b4364b61c8d
> --- /dev/null
> +++ b/drivers/gpu/drm/drm_dumb_buffers.c
> @@ -0,0 +1,135 @@
> +/*
> + * Copyright (c) 2016 Intel Corporation

I've mentioned this elsewhere, but we should also retain the original
copyright statements for the code we are copying.

Otherwise,
Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the dri-devel mailing list