aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_gem.c27
-rw-r--r--drivers/gpu/drm/msm/msm_drv.c2
-rw-r--r--drivers/gpu/drm/omapdrm/omap_debugfs.c2
-rw-r--r--drivers/gpu/drm/tilcdc/tilcdc_drv.c2
-rw-r--r--include/drm/drmP.h9
5 files changed, 16 insertions, 26 deletions
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 3ff39bb0402d..bed5c3bfed76 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -91,19 +91,19 @@
91int 91int
92drm_gem_init(struct drm_device *dev) 92drm_gem_init(struct drm_device *dev)
93{ 93{
94 struct drm_gem_mm *mm; 94 struct drm_vma_offset_manager *vma_offset_manager;
95 95
96 mutex_init(&dev->object_name_lock); 96 mutex_init(&dev->object_name_lock);
97 idr_init(&dev->object_name_idr); 97 idr_init(&dev->object_name_idr);
98 98
99 mm = kzalloc(sizeof(struct drm_gem_mm), GFP_KERNEL); 99 vma_offset_manager = kzalloc(sizeof(*vma_offset_manager), GFP_KERNEL);
100 if (!mm) { 100 if (!vma_offset_manager) {
101 DRM_ERROR("out of memory\n"); 101 DRM_ERROR("out of memory\n");
102 return -ENOMEM; 102 return -ENOMEM;
103 } 103 }
104 104
105 dev->mm_private = mm; 105 dev->vma_offset_manager = vma_offset_manager;
106 drm_vma_offset_manager_init(&mm->vma_manager, 106 drm_vma_offset_manager_init(vma_offset_manager,
107 DRM_FILE_PAGE_OFFSET_START, 107 DRM_FILE_PAGE_OFFSET_START,
108 DRM_FILE_PAGE_OFFSET_SIZE); 108 DRM_FILE_PAGE_OFFSET_SIZE);
109 109
@@ -113,11 +113,10 @@ drm_gem_init(struct drm_device *dev)
113void 113void
114drm_gem_destroy(struct drm_device *dev) 114drm_gem_destroy(struct drm_device *dev)
115{ 115{
116 struct drm_gem_mm *mm = dev->mm_private;
117 116
118 drm_vma_offset_manager_destroy(&mm->vma_manager); 117 drm_vma_offset_manager_destroy(dev->vma_offset_manager);
119 kfree(mm); 118 kfree(dev->vma_offset_manager);
120 dev->mm_private = NULL; 119 dev->vma_offset_manager = NULL;
121} 120}
122 121
123/** 122/**
@@ -362,9 +361,8 @@ void
362drm_gem_free_mmap_offset(struct drm_gem_object *obj) 361drm_gem_free_mmap_offset(struct drm_gem_object *obj)
363{ 362{
364 struct drm_device *dev = obj->dev; 363 struct drm_device *dev = obj->dev;
365 struct drm_gem_mm *mm = dev->mm_private;
366 364
367 drm_vma_offset_remove(&mm->vma_manager, &obj->vma_node); 365 drm_vma_offset_remove(dev->vma_offset_manager, &obj->vma_node);
368} 366}
369EXPORT_SYMBOL(drm_gem_free_mmap_offset); 367EXPORT_SYMBOL(drm_gem_free_mmap_offset);
370 368
@@ -386,9 +384,8 @@ int
386drm_gem_create_mmap_offset_size(struct drm_gem_object *obj, size_t size) 384drm_gem_create_mmap_offset_size(struct drm_gem_object *obj, size_t size)
387{ 385{
388 struct drm_device *dev = obj->dev; 386 struct drm_device *dev = obj->dev;
389 struct drm_gem_mm *mm = dev->mm_private;
390 387
391 return drm_vma_offset_add(&mm->vma_manager, &obj->vma_node, 388 return drm_vma_offset_add(dev->vma_offset_manager, &obj->vma_node,
392 size / PAGE_SIZE); 389 size / PAGE_SIZE);
393} 390}
394EXPORT_SYMBOL(drm_gem_create_mmap_offset_size); 391EXPORT_SYMBOL(drm_gem_create_mmap_offset_size);
@@ -818,7 +815,6 @@ int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
818{ 815{
819 struct drm_file *priv = filp->private_data; 816 struct drm_file *priv = filp->private_data;
820 struct drm_device *dev = priv->minor->dev; 817 struct drm_device *dev = priv->minor->dev;
821 struct drm_gem_mm *mm = dev->mm_private;
822 struct drm_gem_object *obj; 818 struct drm_gem_object *obj;
823 struct drm_vma_offset_node *node; 819 struct drm_vma_offset_node *node;
824 int ret = 0; 820 int ret = 0;
@@ -828,7 +824,8 @@ int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
828 824
829 mutex_lock(&dev->struct_mutex); 825 mutex_lock(&dev->struct_mutex);
830 826
831 node = drm_vma_offset_exact_lookup(&mm->vma_manager, vma->vm_pgoff, 827 node = drm_vma_offset_exact_lookup(dev->vma_offset_manager,
828 vma->vm_pgoff,
832 vma_pages(vma)); 829 vma_pages(vma));
833 if (!node) { 830 if (!node) {
834 mutex_unlock(&dev->struct_mutex); 831 mutex_unlock(&dev->struct_mutex);
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 63ed79fe8a05..e6adafc7eff3 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -461,7 +461,7 @@ static int msm_gem_show(struct drm_device *dev, struct seq_file *m)
461 461
462static int msm_mm_show(struct drm_device *dev, struct seq_file *m) 462static int msm_mm_show(struct drm_device *dev, struct seq_file *m)
463{ 463{
464 return drm_mm_dump_table(m, dev->mm_private); 464 return drm_mm_dump_table(m, &dev->vma_offset_manager->vm_addr_space_mm);
465} 465}
466 466
467static int msm_fb_show(struct drm_device *dev, struct seq_file *m) 467static int msm_fb_show(struct drm_device *dev, struct seq_file *m)
diff --git a/drivers/gpu/drm/omapdrm/omap_debugfs.c b/drivers/gpu/drm/omapdrm/omap_debugfs.c
index c27f59da7f29..d4c04d69fc4d 100644
--- a/drivers/gpu/drm/omapdrm/omap_debugfs.c
+++ b/drivers/gpu/drm/omapdrm/omap_debugfs.c
@@ -48,7 +48,7 @@ static int mm_show(struct seq_file *m, void *arg)
48{ 48{
49 struct drm_info_node *node = (struct drm_info_node *) m->private; 49 struct drm_info_node *node = (struct drm_info_node *) m->private;
50 struct drm_device *dev = node->minor->dev; 50 struct drm_device *dev = node->minor->dev;
51 return drm_mm_dump_table(m, dev->mm_private); 51 return drm_mm_dump_table(m, &dev->vma_offset_manager->vm_addr_space_mm);
52} 52}
53 53
54static int fb_show(struct seq_file *m, void *arg) 54static int fb_show(struct seq_file *m, void *arg)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 0c22b6ca7fd2..171a8203892c 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -444,7 +444,7 @@ static int tilcdc_mm_show(struct seq_file *m, void *arg)
444{ 444{
445 struct drm_info_node *node = (struct drm_info_node *) m->private; 445 struct drm_info_node *node = (struct drm_info_node *) m->private;
446 struct drm_device *dev = node->minor->dev; 446 struct drm_device *dev = node->minor->dev;
447 return drm_mm_dump_table(m, dev->mm_private); 447 return drm_mm_dump_table(m, &dev->vma_offset_manager->vm_addr_space_mm);
448} 448}
449 449
450static struct drm_info_list tilcdc_debugfs_list[] = { 450static struct drm_info_list tilcdc_debugfs_list[] = {
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 2fe9b5d5d162..63eab2b72ee7 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -622,13 +622,6 @@ struct drm_ati_pcigart_info {
622}; 622};
623 623
624/** 624/**
625 * GEM specific mm private for tracking GEM objects
626 */
627struct drm_gem_mm {
628 struct drm_vma_offset_manager vma_manager;
629};
630
631/**
632 * This structure defines the drm_mm memory object, which will be used by the 625 * This structure defines the drm_mm memory object, which will be used by the
633 * DRM for its buffer objects. 626 * DRM for its buffer objects.
634 */ 627 */
@@ -1185,7 +1178,6 @@ struct drm_device {
1185 struct drm_sg_mem *sg; /**< Scatter gather memory */ 1178 struct drm_sg_mem *sg; /**< Scatter gather memory */
1186 unsigned int num_crtcs; /**< Number of CRTCs on this device */ 1179 unsigned int num_crtcs; /**< Number of CRTCs on this device */
1187 void *dev_private; /**< device private data */ 1180 void *dev_private; /**< device private data */
1188 void *mm_private;
1189 struct address_space *dev_mapping; 1181 struct address_space *dev_mapping;
1190 struct drm_sigdata sigdata; /**< For block_all_signals */ 1182 struct drm_sigdata sigdata; /**< For block_all_signals */
1191 sigset_t sigmask; 1183 sigset_t sigmask;
@@ -1203,6 +1195,7 @@ struct drm_device {
1203 /*@{ */ 1195 /*@{ */
1204 struct mutex object_name_lock; 1196 struct mutex object_name_lock;
1205 struct idr object_name_idr; 1197 struct idr object_name_idr;
1198 struct drm_vma_offset_manager *vma_offset_manager;
1206 /*@} */ 1199 /*@} */
1207 int switch_power_state; 1200 int switch_power_state;
1208 1201