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

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
...@@ -42,6 +42,15 @@ int drm_gem_private_object_init(struct drm_device *dev, ...@@ -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) 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) if (obj->filp)
drm_gem_object_release(obj); drm_gem_object_release(obj);
} }
......
...@@ -19,12 +19,8 @@ ...@@ -19,12 +19,8 @@
* Authors: Alan Cox * Authors: Alan Cox
* *
* TODO: * TODO:
* - we don't actually put GEM objects into the GART yet * - we need to work out if the MMU is relevant (eg for
* - we need to work out if the MMU is relevant as well (eg for
* accelerated operations on a GEM object) * accelerated operations on a GEM object)
* - cache coherency
*
* ie this is just an initial framework to get us going.
*/ */
#include <drm/drmP.h> #include <drm/drmP.h>
...@@ -40,15 +36,6 @@ int psb_gem_init_object(struct drm_gem_object *obj) ...@@ -40,15 +36,6 @@ int psb_gem_init_object(struct drm_gem_object *obj)
void psb_gem_free_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); 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); drm_gem_object_release_wrap(obj);
/* This must occur last as it frees up the memory of the GEM object */ /* This must occur last as it frees up the memory of the GEM object */
psb_gtt_free_range(obj->dev, gtt); psb_gtt_free_range(obj->dev, gtt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment