diff options
author | Dave Airlie <airlied@redhat.com> | 2009-08-19 23:38:04 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-08-19 23:38:04 -0400 |
commit | 51c8b4071d84d46cc100baa5931ad06b2a823c95 (patch) | |
tree | 098cf9d41ce1c548d922708a770a9efe35e434df /drivers/gpu/drm/radeon/radeon_ttm.c | |
parent | a987fcaa805fcb24ba885c2e29fd4fdb6816f08f (diff) | |
parent | 6c30c53fd5ae6a99a23ad78e90c428d2c8ffb07f (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.c | 24 |
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) { | ||
395 | memcpy: | ||
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 | ||
455 | int radeon_ttm_init(struct radeon_device *rdev) | 460 | int 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) { |