[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 Intel-gfx
mailing list