diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/gpu/drm/drm_gem.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (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.c | 25 |
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 | } |
159 | EXPORT_SYMBOL(drm_gem_object_init); | 151 | EXPORT_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; |
181 | fput: | 173 | fput: |
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); |
186 | free: | 176 | free: |
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 | */ |
195 | static int | 185 | int |
196 | drm_gem_handle_delete(struct drm_file *filp, u32 handle) | 186 | drm_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 | } |
218 | EXPORT_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) | |||
436 | void | 427 | void |
437 | drm_gem_object_release(struct drm_gem_object *obj) | 428 | drm_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 | } |
444 | EXPORT_SYMBOL(drm_gem_object_release); | 432 | EXPORT_SYMBOL(drm_gem_object_release); |
445 | 433 | ||
@@ -512,11 +500,12 @@ EXPORT_SYMBOL(drm_gem_vm_open); | |||
512 | void drm_gem_vm_close(struct vm_area_struct *vma) | 500 | void 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 | } |
521 | EXPORT_SYMBOL(drm_gem_vm_close); | 510 | EXPORT_SYMBOL(drm_gem_vm_close); |
522 | 511 | ||