Commit 5338afdf authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman
Browse files

gma500: Update the GEM todo



We also pull out the undo side of the mmap offset processing so we can later
push it into GEM where it belongs

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 078d6f71
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -42,6 +42,15 @@ int drm_gem_private_object_init(struct drm_device *dev,

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;
	}
	if (obj->filp)
		drm_gem_object_release(obj);
}
+1 −14
Original line number Diff line number Diff line
@@ -19,12 +19,8 @@
 * Authors: Alan Cox
 *
 * TODO:
 *	-	we don't actually put GEM objects into the GART yet
 *	-	we need to work out if the MMU is relevant as well (eg for
 *	-	we need to work out if the MMU is relevant (eg for
 *		accelerated operations on a GEM object)
 *	-	cache coherency
 *
 * ie this is just an initial framework to get us going.
 */

#include <drm/drmP.h>
@@ -40,15 +36,6 @@ 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);
	if (obj->map_list.map) {
		/* Do things GEM should do for us */
		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_wrap(obj);
	/* This must occur last as it frees up the memory of the GEM object */
	psb_gtt_free_range(obj->dev, gtt);