aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_gem.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/gpu/drm/drm_gem.c
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'drivers/gpu/drm/drm_gem.c')
-rw-r--r--drivers/gpu/drm/drm_gem.c25
1 files changed, 7 insertions, 18 deletions
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 5663d2719063..4012fe423460 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -34,6 +34,7 @@
34#include <linux/module.h> 34#include <linux/module.h>
35#include <linux/mman.h> 35#include <linux/mman.h>
36#include <linux/pagemap.h> 36#include <linux/pagemap.h>
37#include <linux/shmem_fs.h>
37#include "drmP.h" 38#include "drmP.h"
38 39
39/** @file drm_gem.c 40/** @file drm_gem.c
@@ -92,12 +93,6 @@ drm_gem_init(struct drm_device *dev)
92 93
93 spin_lock_init(&dev->object_name_lock); 94 spin_lock_init(&dev->object_name_lock);
94 idr_init(&dev->object_name_idr); 95 idr_init(&dev->object_name_idr);
95 atomic_set(&dev->object_count, 0);
96 atomic_set(&dev->object_memory, 0);
97 atomic_set(&dev->pin_count, 0);
98 atomic_set(&dev->pin_memory, 0);
99 atomic_set(&dev->gtt_count, 0);
100 atomic_set(&dev->gtt_memory, 0);
101 96
102 mm = kzalloc(sizeof(struct drm_gem_mm), GFP_KERNEL); 97 mm = kzalloc(sizeof(struct drm_gem_mm), GFP_KERNEL);
103 if (!mm) { 98 if (!mm) {
@@ -107,7 +102,7 @@ drm_gem_init(struct drm_device *dev)
107 102
108 dev->mm_private = mm; 103 dev->mm_private = mm;
109 104
110 if (drm_ht_create(&mm->offset_hash, 19)) { 105 if (drm_ht_create(&mm->offset_hash, 12)) {
111 kfree(mm); 106 kfree(mm);
112 return -ENOMEM; 107 return -ENOMEM;
113 } 108 }
@@ -151,9 +146,6 @@ int drm_gem_object_init(struct drm_device *dev,
151 atomic_set(&obj->handle_count, 0); 146 atomic_set(&obj->handle_count, 0);
152 obj->size = size; 147 obj->size = size;
153 148
154 atomic_inc(&dev->object_count);
155 atomic_add(obj->size, &dev->object_memory);
156
157 return 0; 149 return 0;
158} 150}
159EXPORT_SYMBOL(drm_gem_object_init); 151EXPORT_SYMBOL(drm_gem_object_init);
@@ -180,8 +172,6 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size)
180 return obj; 172 return obj;
181fput: 173fput:
182 /* Object_init mangles the global counters - readjust them. */ 174 /* Object_init mangles the global counters - readjust them. */
183 atomic_dec(&dev->object_count);
184 atomic_sub(obj->size, &dev->object_memory);
185 fput(obj->filp); 175 fput(obj->filp);
186free: 176free:
187 kfree(obj); 177 kfree(obj);
@@ -192,7 +182,7 @@ EXPORT_SYMBOL(drm_gem_object_alloc);
192/** 182/**
193 * Removes the mapping from handle to filp for this object. 183 * Removes the mapping from handle to filp for this object.
194 */ 184 */
195static int 185int
196drm_gem_handle_delete(struct drm_file *filp, u32 handle) 186drm_gem_handle_delete(struct drm_file *filp, u32 handle)
197{ 187{
198 struct drm_device *dev; 188 struct drm_device *dev;
@@ -225,6 +215,7 @@ drm_gem_handle_delete(struct drm_file *filp, u32 handle)
225 215
226 return 0; 216 return 0;
227} 217}
218EXPORT_SYMBOL(drm_gem_handle_delete);
228 219
229/** 220/**
230 * Create a handle for this object. This adds a handle reference 221 * Create a handle for this object. This adds a handle reference
@@ -436,10 +427,7 @@ drm_gem_release(struct drm_device *dev, struct drm_file *file_private)
436void 427void
437drm_gem_object_release(struct drm_gem_object *obj) 428drm_gem_object_release(struct drm_gem_object *obj)
438{ 429{
439 struct drm_device *dev = obj->dev;
440 fput(obj->filp); 430 fput(obj->filp);
441 atomic_dec(&dev->object_count);
442 atomic_sub(obj->size, &dev->object_memory);
443} 431}
444EXPORT_SYMBOL(drm_gem_object_release); 432EXPORT_SYMBOL(drm_gem_object_release);
445 433
@@ -512,11 +500,12 @@ EXPORT_SYMBOL(drm_gem_vm_open);
512void drm_gem_vm_close(struct vm_area_struct *vma) 500void drm_gem_vm_close(struct vm_area_struct *vma)
513{ 501{
514 struct drm_gem_object *obj = vma->vm_private_data; 502 struct drm_gem_object *obj = vma->vm_private_data;
503 struct drm_device *dev = obj->dev;
515 504
516 mutex_lock(&obj->dev->struct_mutex); 505 mutex_lock(&dev->struct_mutex);
517 drm_vm_close_locked(vma); 506 drm_vm_close_locked(vma);
518 drm_gem_object_unreference(obj); 507 drm_gem_object_unreference(obj);
519 mutex_unlock(&obj->dev->struct_mutex); 508 mutex_unlock(&dev->struct_mutex);
520} 509}
521EXPORT_SYMBOL(drm_gem_vm_close); 510EXPORT_SYMBOL(drm_gem_vm_close);
522 511