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: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
078d6f7167
commit
5338afdfb5
|
@ -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 @@
|
||||||
* 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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue