diff options
-rw-r--r-- | drivers/gpu/drm/drm_gem.c | 27 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_debugfs.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 | ||||
-rw-r--r-- | include/drm/drmP.h | 9 |
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 @@ | |||
91 | int | 91 | int |
92 | drm_gem_init(struct drm_device *dev) | 92 | drm_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) | |||
113 | void | 113 | void |
114 | drm_gem_destroy(struct drm_device *dev) | 114 | drm_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 | |||
362 | drm_gem_free_mmap_offset(struct drm_gem_object *obj) | 361 | drm_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 | } |
369 | EXPORT_SYMBOL(drm_gem_free_mmap_offset); | 367 | EXPORT_SYMBOL(drm_gem_free_mmap_offset); |
370 | 368 | ||
@@ -386,9 +384,8 @@ int | |||
386 | drm_gem_create_mmap_offset_size(struct drm_gem_object *obj, size_t size) | 384 | drm_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 | } |
394 | EXPORT_SYMBOL(drm_gem_create_mmap_offset_size); | 391 | EXPORT_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 | ||
462 | static int msm_mm_show(struct drm_device *dev, struct seq_file *m) | 462 | static 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 | ||
467 | static int msm_fb_show(struct drm_device *dev, struct seq_file *m) | 467 | static 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 | ||
54 | static int fb_show(struct seq_file *m, void *arg) | 54 | static 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 | ||
450 | static struct drm_info_list tilcdc_debugfs_list[] = { | 450 | static 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 | */ | ||
627 | struct 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 | ||