The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
Signed-off-by: Laurent Pinchart laurent.pinchart@ideasonboard.com --- drivers/gpu/drm/gma500/Makefile | 2 +- drivers/gpu/drm/gma500/gem.c | 9 +++- drivers/gpu/drm/gma500/gem_glue.c | 90 ------------------------------------- drivers/gpu/drm/gma500/gem_glue.h | 2 - drivers/gpu/drm/gma500/psb_drv.h | 1 - 5 files changed, 8 insertions(+), 96 deletions(-) delete mode 100644 drivers/gpu/drm/gma500/gem_glue.c delete mode 100644 drivers/gpu/drm/gma500/gem_glue.h
The patch has been compile-tested only due to lack of test hardware.
diff --git a/drivers/gpu/drm/gma500/Makefile b/drivers/gpu/drm/gma500/Makefile index 1583982..85b7449 100644 --- a/drivers/gpu/drm/gma500/Makefile +++ b/drivers/gpu/drm/gma500/Makefile @@ -3,7 +3,7 @@ # ccflags-y += -Iinclude/drm
-gma500_gfx-y += gem_glue.o \ +gma500_gfx-y += \ accel_2d.o \ backlight.o \ framebuffer.o \ diff --git a/drivers/gpu/drm/gma500/gem.c b/drivers/gpu/drm/gma500/gem.c index 9fbb868..f2a2e9b 100644 --- a/drivers/gpu/drm/gma500/gem.c +++ b/drivers/gpu/drm/gma500/gem.c @@ -36,7 +36,12 @@ int psb_gem_init_object(struct drm_gem_object *obj) void psb_gem_free_object(struct drm_gem_object *obj) { struct gtt_range *gtt = container_of(obj, struct gtt_range, gem); - drm_gem_object_release_wrap(obj); + + /* Remove the list map if one is present */ + if (obj->map_list.map) + drm_gem_free_mmap_offset(obj); + drm_gem_object_release(obj); + /* This must occur last as it frees up the memory of the GEM object */ psb_gtt_free_range(obj->dev, gtt); } @@ -77,7 +82,7 @@ int psb_gem_dumb_map_gtt(struct drm_file *file, struct drm_device *dev,
/* Make it mmapable */ if (!obj->map_list.map) { - ret = gem_create_mmap_offset(obj); + ret = drm_gem_create_mmap_offset(obj); if (ret) goto out; } diff --git a/drivers/gpu/drm/gma500/gem_glue.c b/drivers/gpu/drm/gma500/gem_glue.c deleted file mode 100644 index 3c17634..0000000 --- a/drivers/gpu/drm/gma500/gem_glue.c +++ /dev/null @@ -1,90 +0,0 @@ -/************************************************************************** - * Copyright (c) 2011, Intel Corporation. - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - * - **************************************************************************/ - -#include <drm/drmP.h> -#include <drm/drm.h> -#include "gem_glue.h" - -void drm_gem_object_release_wrap(struct drm_gem_object *obj) -{ - /* Remove the list map if one is present */ - if (obj->map_list.map) { - struct drm_gem_mm *mm = obj->dev->mm_private; - struct drm_map_list *list = &obj->map_list; - drm_ht_remove_item(&mm->offset_hash, &list->hash); - drm_mm_put_block(list->file_offset_node); - kfree(list->map); - list->map = NULL; - } - drm_gem_object_release(obj); -} - -/** - * gem_create_mmap_offset - invent an mmap offset - * @obj: our object - * - * Standard implementation of offset generation for mmap as is - * duplicated in several drivers. This belongs in GEM. - */ -int gem_create_mmap_offset(struct drm_gem_object *obj) -{ - struct drm_device *dev = obj->dev; - struct drm_gem_mm *mm = dev->mm_private; - struct drm_map_list *list; - struct drm_local_map *map; - int ret; - - list = &obj->map_list; - list->map = kzalloc(sizeof(struct drm_map_list), GFP_KERNEL); - if (list->map == NULL) - return -ENOMEM; - map = list->map; - map->type = _DRM_GEM; - map->size = obj->size; - map->handle = obj; - - list->file_offset_node = drm_mm_search_free(&mm->offset_manager, - obj->size / PAGE_SIZE, 0, 0); - if (!list->file_offset_node) { - dev_err(dev->dev, "failed to allocate offset for bo %d\n", - obj->name); - ret = -ENOSPC; - goto free_it; - } - list->file_offset_node = drm_mm_get_block(list->file_offset_node, - obj->size / PAGE_SIZE, 0); - if (!list->file_offset_node) { - ret = -ENOMEM; - goto free_it; - } - list->hash.key = list->file_offset_node->start; - ret = drm_ht_insert_item(&mm->offset_hash, &list->hash); - if (ret) { - dev_err(dev->dev, "failed to add to map hash\n"); - goto free_mm; - } - return 0; - -free_mm: - drm_mm_put_block(list->file_offset_node); -free_it: - kfree(list->map); - list->map = NULL; - return ret; -} diff --git a/drivers/gpu/drm/gma500/gem_glue.h b/drivers/gpu/drm/gma500/gem_glue.h deleted file mode 100644 index ce5ce30..0000000 --- a/drivers/gpu/drm/gma500/gem_glue.h +++ /dev/null @@ -1,2 +0,0 @@ -extern void drm_gem_object_release_wrap(struct drm_gem_object *obj); -extern int gem_create_mmap_offset(struct drm_gem_object *obj); diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h index 40ce2c9..94badc8 100644 --- a/drivers/gpu/drm/gma500/psb_drv.h +++ b/drivers/gpu/drm/gma500/psb_drv.h @@ -24,7 +24,6 @@
#include <drm/drmP.h> #include "drm_global.h" -#include "gem_glue.h" #include "gma_drm.h" #include "psb_reg.h" #include "psb_intel_drv.h"
On Wed, 16 May 2012 16:59:44 +0200 Laurent Pinchart laurent.pinchart@ideasonboard.com wrote:
The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
That was always then plan so yes - I'll fold this into my tree and test it.
Alan
Hi Alan,
On Wednesday 16 May 2012 16:10:37 Alan Cox wrote:
On Wed, 16 May 2012 16:59:44 +0200 Laurent Pinchart wrote:
The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
That was always then plan so yes - I'll fold this into my tree and test it.
Any update ?
On Tue, 17 Jul 2012 17:09:25 +0200 Laurent Pinchart laurent.pinchart@ideasonboard.com wrote:
Hi Alan,
On Wednesday 16 May 2012 16:10:37 Alan Cox wrote:
On Wed, 16 May 2012 16:59:44 +0200 Laurent Pinchart wrote:
The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
That was always then plan so yes - I'll fold this into my tree and test it.
Any update ?
Sorry it fell off the bottom of the job list. I'll do it right now so it doesn't escape
Alan
On Tuesday 17 July 2012 17:21:06 Alan Cox wrote:
On Tue, 17 Jul 2012 17:09:25 +0200 Laurent Pinchart wrote:
On Wednesday 16 May 2012 16:10:37 Alan Cox wrote:
On Wed, 16 May 2012 16:59:44 +0200 Laurent Pinchart wrote:
The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
That was always then plan so yes - I'll fold this into my tree and test it.
Any update ?
Sorry it fell off the bottom of the job list. I'll do it right now so it doesn't escape
No worries. Thank you.
Hi Alan,
On Tuesday 17 July 2012 17:21:06 Alan Cox wrote:
On Tue, 17 Jul 2012 17:09:25 +0200 Laurent Pinchart wrote:
On Wednesday 16 May 2012 16:10:37 Alan Cox wrote:
On Wed, 16 May 2012 16:59:44 +0200 Laurent Pinchart wrote:
The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
That was always then plan so yes - I'll fold this into my tree and test it.
Any update ?
Sorry it fell off the bottom of the job list. I'll do it right now so it doesn't escape
I still can't find the patch in drm-next. Does it have a bad tendency to fell off ? :-)
On Thu, 23 Aug 2012 12:03:59 +0200 Laurent Pinchart laurent.pinchart@ideasonboard.com wrote:
Hi Alan,
On Tuesday 17 July 2012 17:21:06 Alan Cox wrote:
On Tue, 17 Jul 2012 17:09:25 +0200 Laurent Pinchart wrote:
On Wednesday 16 May 2012 16:10:37 Alan Cox wrote:
On Wed, 16 May 2012 16:59:44 +0200 Laurent Pinchart wrote:
The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
That was always then plan so yes - I'll fold this into my tree and test it.
Any update ?
Sorry it fell off the bottom of the job list. I'll do it right now so it doesn't escape
I still can't find the patch in drm-next. Does it have a bad tendency to fell off ? :-)
I sent to Dave along with the mode setting fixes and DP/eDP support. None of them are yet in the tree but I've not re-sent again as Dave seemed to be busy to trying to mend the -rc tree.
Alan
On Thu, Aug 23, 2012 at 8:52 PM, Alan Cox alan@linux.intel.com wrote:
On Thu, 23 Aug 2012 12:03:59 +0200 Laurent Pinchart laurent.pinchart@ideasonboard.com wrote:
Hi Alan,
On Tuesday 17 July 2012 17:21:06 Alan Cox wrote:
On Tue, 17 Jul 2012 17:09:25 +0200 Laurent Pinchart wrote:
On Wednesday 16 May 2012 16:10:37 Alan Cox wrote:
On Wed, 16 May 2012 16:59:44 +0200 Laurent Pinchart wrote:
The private gem_create_mmap_offset() function is now implemented in the DRM core as drm_gem_create_mmap_offset(). Use it and kill the private copy.
That was always then plan so yes - I'll fold this into my tree and test it.
Any update ?
Sorry it fell off the bottom of the job list. I'll do it right now so it doesn't escape
I still can't find the patch in drm-next. Does it have a bad tendency to fell off ? :-)
I sent to Dave along with the mode setting fixes and DP/eDP support. None of them are yet in the tree but I've not re-sent again as Dave seemed to be busy to trying to mend the -rc tree.
Okay just grabbed all the gma500 dp/edp and this and put them into -next.
Dave.
dri-devel@lists.freedesktop.org