aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_ttm.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2009-08-19 23:38:04 -0400
committerDave Airlie <airlied@redhat.com>2009-08-19 23:38:04 -0400
commit51c8b4071d84d46cc100baa5931ad06b2a823c95 (patch)
tree098cf9d41ce1c548d922708a770a9efe35e434df /drivers/gpu/drm/radeon/radeon_ttm.c
parenta987fcaa805fcb24ba885c2e29fd4fdb6816f08f (diff)
parent6c30c53fd5ae6a99a23ad78e90c428d2c8ffb07f (diff)
Merge Linus master to drm-next
linux-next conflict reported needed resolution. Conflicts: drivers/gpu/drm/drm_crtc.c drivers/gpu/drm/drm_edid.c drivers/gpu/drm/i915/intel_sdvo.c drivers/gpu/drm/radeon/radeon_ttm.c drivers/gpu/drm/ttm/ttm_bo.c
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_ttm.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_ttm.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 343b6d6b99c6..6f5ad0802fcd 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -376,23 +376,26 @@ static int radeon_bo_move(struct ttm_buffer_object *bo,
376 if (!rdev->cp.ready) { 376 if (!rdev->cp.ready) {
377 /* use memcpy */ 377 /* use memcpy */
378 DRM_ERROR("CP is not ready use memcpy.\n"); 378 DRM_ERROR("CP is not ready use memcpy.\n");
379 return ttm_bo_move_memcpy(bo, evict, no_wait, new_mem); 379 goto memcpy;
380 } 380 }
381 381
382 if (old_mem->mem_type == TTM_PL_VRAM && 382 if (old_mem->mem_type == TTM_PL_VRAM &&
383 new_mem->mem_type == TTM_PL_SYSTEM) { 383 new_mem->mem_type == TTM_PL_SYSTEM) {
384 return radeon_move_vram_ram(bo, evict, interruptible, 384 r = radeon_move_vram_ram(bo, evict, interruptible,
385 no_wait, new_mem); 385 no_wait, new_mem);
386 } else if (old_mem->mem_type == TTM_PL_SYSTEM && 386 } else if (old_mem->mem_type == TTM_PL_SYSTEM &&
387 new_mem->mem_type == TTM_PL_VRAM) { 387 new_mem->mem_type == TTM_PL_VRAM) {
388 return radeon_move_ram_vram(bo, evict, interruptible, 388 r = radeon_move_ram_vram(bo, evict, interruptible,
389 no_wait, new_mem); 389 no_wait, new_mem);
390 } else { 390 } else {
391 r = radeon_move_blit(bo, evict, no_wait, new_mem, old_mem); 391 r = radeon_move_blit(bo, evict, no_wait, new_mem, old_mem);
392 if (unlikely(r)) {
393 return r;
394 }
395 } 392 }
393
394 if (r) {
395memcpy:
396 r = ttm_bo_move_memcpy(bo, evict, no_wait, new_mem);
397 }
398
396 return r; 399 return r;
397} 400}
398 401
@@ -450,6 +453,8 @@ static struct ttm_bo_driver radeon_bo_driver = {
450 .sync_obj_flush = &radeon_sync_obj_flush, 453 .sync_obj_flush = &radeon_sync_obj_flush,
451 .sync_obj_unref = &radeon_sync_obj_unref, 454 .sync_obj_unref = &radeon_sync_obj_unref,
452 .sync_obj_ref = &radeon_sync_obj_ref, 455 .sync_obj_ref = &radeon_sync_obj_ref,
456 .move_notify = &radeon_bo_move_notify,
457 .fault_reserve_notify = &radeon_bo_fault_reserve_notify,
453}; 458};
454 459
455int radeon_ttm_init(struct radeon_device *rdev) 460int radeon_ttm_init(struct radeon_device *rdev)
@@ -463,13 +468,14 @@ int radeon_ttm_init(struct radeon_device *rdev)
463 /* No others user of address space so set it to 0 */ 468 /* No others user of address space so set it to 0 */
464 r = ttm_bo_device_init(&rdev->mman.bdev, 469 r = ttm_bo_device_init(&rdev->mman.bdev,
465 rdev->mman.bo_global_ref.ref.object, 470 rdev->mman.bo_global_ref.ref.object,
466 &radeon_bo_driver, DRM_FILE_PAGE_OFFSET); 471 &radeon_bo_driver, DRM_FILE_PAGE_OFFSET,
472 rdev->need_dma32);
467 if (r) { 473 if (r) {
468 DRM_ERROR("failed initializing buffer object driver(%d).\n", r); 474 DRM_ERROR("failed initializing buffer object driver(%d).\n", r);
469 return r; 475 return r;
470 } 476 }
471 r = ttm_bo_init_mm(&rdev->mman.bdev, TTM_PL_VRAM, 0, 477 r = ttm_bo_init_mm(&rdev->mman.bdev, TTM_PL_VRAM, 0,
472 ((rdev->mc.aper_size) >> PAGE_SHIFT)); 478 ((rdev->mc.real_vram_size) >> PAGE_SHIFT));
473 if (r) { 479 if (r) {
474 DRM_ERROR("Failed initializing VRAM heap.\n"); 480 DRM_ERROR("Failed initializing VRAM heap.\n");
475 return r; 481 return r;
@@ -486,7 +492,7 @@ int radeon_ttm_init(struct radeon_device *rdev)
486 return r; 492 return r;
487 } 493 }
488 DRM_INFO("radeon: %uM of VRAM memory ready\n", 494 DRM_INFO("radeon: %uM of VRAM memory ready\n",
489 rdev->mc.vram_size / (1024 * 1024)); 495 rdev->mc.real_vram_size / (1024 * 1024));
490 r = ttm_bo_init_mm(&rdev->mman.bdev, TTM_PL_TT, 0, 496 r = ttm_bo_init_mm(&rdev->mman.bdev, TTM_PL_TT, 0,
491 ((rdev->mc.gtt_size) >> PAGE_SHIFT)); 497 ((rdev->mc.gtt_size) >> PAGE_SHIFT));
492 if (r) { 498 if (r) {