summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2014-11-19 12:06:38 -0800
committerEric Anholt <eric@anholt.net>2015-06-04 14:15:25 -0700
commit558caeba4ece63112452d0a454554d011a465917 (patch)
treed12973b041ce0df9f807d78c82cc55a1ac366832
parent89717fa400c0a77850c7ca55ce43c4ca0085f548 (diff)
downloadlinux-558caeba4ece63112452d0a454554d011a465917.tar.gz
drm: Put an optional field in the driver struct for GEM obj struct size.
This allows a driver to derive from the CMA object without copying all of the code. Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--drivers/gpu/drm/drm_gem_cma_helper.c5
-rw-r--r--include/drm/drmP.h1
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c
index e419eedf751d..be121c9a8e92 100644
--- a/drivers/gpu/drm/drm_gem_cma_helper.c
+++ b/drivers/gpu/drm/drm_gem_cma_helper.c
@@ -58,8 +58,11 @@ __drm_gem_cma_create(struct drm_device *drm, size_t size)
struct drm_gem_cma_object *cma_obj;
struct drm_gem_object *gem_obj;
int ret;
+ size_t obj_size = (drm->driver->gem_obj_size ?
+ drm->driver->gem_obj_size :
+ sizeof(*cma_obj));
- cma_obj = kzalloc(sizeof(*cma_obj), GFP_KERNEL);
+ cma_obj = kzalloc(obj_size, GFP_KERNEL);
if (!cma_obj)
return ERR_PTR(-ENOMEM);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 62c40777c009..f59a177aa344 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -621,6 +621,7 @@ struct drm_driver {
u32 driver_features;
int dev_priv_size;
+ size_t gem_obj_size;
const struct drm_ioctl_desc *ioctls;
int num_ioctls;
const struct file_operations *fops;