Rev 4075 | Rev 4569 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4075 | Rev 4112 | ||
---|---|---|---|
Line 37... | Line 37... | ||
37 | #include |
37 | #include |
38 | #include |
38 | #include |
39 | #include |
39 | #include |
40 | #include |
40 | #include |
Line -... | Line 41... | ||
- | 41 | ||
- | 42 | #define TTM_ASSERT_LOCKED(param) |
|
- | 43 | #define TTM_DEBUG(fmt, arg...) |
|
- | 44 | #define TTM_BO_HASH_ORDER 13 |
|
41 | 45 | ||
42 | #define pr_err(fmt, ...) \ |
46 | #define pr_err(fmt, ...) \ |
Line 43... | Line 47... | ||
43 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) |
47 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) |
44 | 48 | ||
Line 217... | Line 221... | ||
217 | spin_unlock(&bo->glob->lru_lock); |
221 | spin_unlock(&bo->glob->lru_lock); |
218 | ttm_bo_list_ref_sub(bo, put_count, true); |
222 | ttm_bo_list_ref_sub(bo, put_count, true); |
219 | } |
223 | } |
220 | EXPORT_SYMBOL(ttm_bo_del_sub_from_lru); |
224 | EXPORT_SYMBOL(ttm_bo_del_sub_from_lru); |
Line 221... | Line -... | ||
221 | - | ||
222 | 225 | ||
223 | /* |
226 | /* |
224 | * Call bo->mutex locked. |
227 | * Call bo->mutex locked. |
225 | */ |
228 | */ |
226 | static int ttm_bo_add_ttm(struct ttm_buffer_object *bo, bool zero_alloc) |
229 | static int ttm_bo_add_ttm(struct ttm_buffer_object *bo, bool zero_alloc) |
227 | { |
230 | { |
228 | struct ttm_bo_device *bdev = bo->bdev; |
231 | struct ttm_bo_device *bdev = bo->bdev; |
229 | struct ttm_bo_global *glob = bo->glob; |
232 | struct ttm_bo_global *glob = bo->glob; |
230 | int ret = 0; |
233 | int ret = 0; |
Line 231... | Line 234... | ||
231 | uint32_t page_flags = 0; |
234 | uint32_t page_flags = 0; |
232 | 235 | ||
Line 233... | Line 236... | ||
233 | // TTM_ASSERT_LOCKED(&bo->mutex); |
236 | TTM_ASSERT_LOCKED(&bo->mutex); |
234 | bo->ttm = NULL; |
237 | bo->ttm = NULL; |
Line 607... | Line 610... | ||
607 | struct ttm_buffer_object *bo = |
610 | struct ttm_buffer_object *bo = |
608 | container_of(kref, struct ttm_buffer_object, kref); |
611 | container_of(kref, struct ttm_buffer_object, kref); |
609 | struct ttm_bo_device *bdev = bo->bdev; |
612 | struct ttm_bo_device *bdev = bo->bdev; |
610 | struct ttm_mem_type_manager *man = &bdev->man[bo->mem.mem_type]; |
613 | struct ttm_mem_type_manager *man = &bdev->man[bo->mem.mem_type]; |
Line 611... | Line -... | ||
611 | - | ||
612 | write_lock(&bdev->vm_lock); |
- | |
613 | if (likely(bo->vm_node != NULL)) { |
- | |
614 | // rb_erase(&bo->vm_rb, &bdev->addr_space_rb); |
614 | |
615 | drm_mm_put_block(bo->vm_node); |
- | |
616 | bo->vm_node = NULL; |
- | |
617 | } |
- | |
618 | write_unlock(&bdev->vm_lock); |
615 | drm_vma_offset_remove(&bdev->vma_manager, &bo->vma_node); |
619 | ttm_mem_io_lock(man, false); |
616 | ttm_mem_io_lock(man, false); |
620 | // ttm_mem_io_free_vm(bo); |
617 | // ttm_mem_io_free_vm(bo); |
621 | ttm_mem_io_unlock(man); |
618 | ttm_mem_io_unlock(man); |
622 | // ttm_bo_cleanup_refs_or_queue(bo); |
619 | // ttm_bo_cleanup_refs_or_queue(bo); |
Line 1123... | Line 1120... | ||
1123 | bo->acc_size = acc_size; |
1120 | bo->acc_size = acc_size; |
1124 | bo->sg = sg; |
1121 | bo->sg = sg; |
1125 | bo->resv = &bo->ttm_resv; |
1122 | bo->resv = &bo->ttm_resv; |
1126 | // reservation_object_init(bo->resv); |
1123 | // reservation_object_init(bo->resv); |
1127 | atomic_inc(&bo->glob->bo_count); |
1124 | atomic_inc(&bo->glob->bo_count); |
- | 1125 | drm_vma_node_reset(&bo->vma_node); |
|
Line 1128... | Line 1126... | ||
1128 | 1126 | ||
Line 1129... | Line 1127... | ||
1129 | ret = ttm_bo_check_placement(bo, placement); |
1127 | ret = ttm_bo_check_placement(bo, placement); |
1130 | 1128 | ||
Line 1301... | Line 1299... | ||
1301 | 1299 | ||
1302 | out_no_drp: |
1300 | out_no_drp: |
1303 | kfree(glob); |
1301 | kfree(glob); |
1304 | return ret; |
1302 | return ret; |
- | 1303 | } |
|
Line 1305... | Line 1304... | ||
1305 | } |
1304 | EXPORT_SYMBOL(ttm_bo_global_init); |
1306 | 1305 | ||
1307 | 1306 | ||
Line 1313... | Line 1312... | ||
1313 | { |
1312 | { |
1314 | int ret = -EINVAL; |
1313 | int ret = -EINVAL; |
Line 1315... | Line 1314... | ||
1315 | 1314 | ||
Line 1316... | Line -... | ||
1316 | ENTER(); |
- | |
1317 | 1315 | ENTER(); |
|
Line 1318... | Line 1316... | ||
1318 | // rwlock_init(&bdev->vm_lock); |
1316 | |
Line 1319... | Line 1317... | ||
1319 | bdev->driver = driver; |
1317 | bdev->driver = driver; |
Line 1326... | Line 1324... | ||
1326 | */ |
1324 | */ |
1327 | ret = ttm_bo_init_mm(bdev, TTM_PL_SYSTEM, 0); |
1325 | ret = ttm_bo_init_mm(bdev, TTM_PL_SYSTEM, 0); |
1328 | if (unlikely(ret != 0)) |
1326 | if (unlikely(ret != 0)) |
1329 | goto out_no_sys; |
1327 | goto out_no_sys; |
Line 1330... | Line -... | ||
1330 | - | ||
1331 | bdev->addr_space_rb = RB_ROOT; |
1328 | |
1332 | drm_mm_init(&bdev->addr_space_mm, file_page_offset, 0x10000000); |
- | |
- | 1329 | drm_vma_offset_manager_init(&bdev->vma_manager, file_page_offset, |
|
1333 | 1330 | 0x10000000); |
|
1334 | // INIT_DELAYED_WORK(&bdev->wq, ttm_bo_delayed_workqueue); |
1331 | // INIT_DELAYED_WORK(&bdev->wq, ttm_bo_delayed_workqueue); |
1335 | INIT_LIST_HEAD(&bdev->ddestroy); |
1332 | INIT_LIST_HEAD(&bdev->ddestroy); |
1336 | bdev->dev_mapping = NULL; |
1333 | bdev->dev_mapping = NULL; |
1337 | bdev->glob = glob; |
1334 | bdev->glob = glob; |