diff options
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen_blit_kms.c | 40 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/ni.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r600_blit_kms.c | 40 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/si.c | 3 |
8 files changed, 40 insertions, 63 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 64e06e67facd..82f7aea14a6e 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
@@ -3139,7 +3139,6 @@ int evergreen_suspend(struct radeon_device *rdev) | |||
3139 | struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; | 3139 | struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; |
3140 | 3140 | ||
3141 | r600_audio_fini(rdev); | 3141 | r600_audio_fini(rdev); |
3142 | r600_blit_suspend(rdev); | ||
3143 | r700_cp_stop(rdev); | 3142 | r700_cp_stop(rdev); |
3144 | ring->ready = false; | 3143 | ring->ready = false; |
3145 | evergreen_irq_suspend(rdev); | 3144 | evergreen_irq_suspend(rdev); |
diff --git a/drivers/gpu/drm/radeon/evergreen_blit_kms.c b/drivers/gpu/drm/radeon/evergreen_blit_kms.c index e512560ffc6f..89cb9feb5653 100644 --- a/drivers/gpu/drm/radeon/evergreen_blit_kms.c +++ b/drivers/gpu/drm/radeon/evergreen_blit_kms.c | |||
@@ -634,10 +634,6 @@ int evergreen_blit_init(struct radeon_device *rdev) | |||
634 | 634 | ||
635 | rdev->r600_blit.max_dim = 16384; | 635 | rdev->r600_blit.max_dim = 16384; |
636 | 636 | ||
637 | /* pin copy shader into vram if already initialized */ | ||
638 | if (rdev->r600_blit.shader_obj) | ||
639 | goto done; | ||
640 | |||
641 | rdev->r600_blit.state_offset = 0; | 637 | rdev->r600_blit.state_offset = 0; |
642 | 638 | ||
643 | if (rdev->family < CHIP_CAYMAN) | 639 | if (rdev->family < CHIP_CAYMAN) |
@@ -668,11 +664,26 @@ int evergreen_blit_init(struct radeon_device *rdev) | |||
668 | obj_size += cayman_ps_size * 4; | 664 | obj_size += cayman_ps_size * 4; |
669 | obj_size = ALIGN(obj_size, 256); | 665 | obj_size = ALIGN(obj_size, 256); |
670 | 666 | ||
671 | r = radeon_bo_create(rdev, obj_size, PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM, | 667 | /* pin copy shader into vram if not already initialized */ |
672 | NULL, &rdev->r600_blit.shader_obj); | 668 | if (!rdev->r600_blit.shader_obj) { |
673 | if (r) { | 669 | r = radeon_bo_create(rdev, obj_size, PAGE_SIZE, true, |
674 | DRM_ERROR("evergreen failed to allocate shader\n"); | 670 | RADEON_GEM_DOMAIN_VRAM, |
675 | return r; | 671 | NULL, &rdev->r600_blit.shader_obj); |
672 | if (r) { | ||
673 | DRM_ERROR("evergreen failed to allocate shader\n"); | ||
674 | return r; | ||
675 | } | ||
676 | |||
677 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | ||
678 | if (unlikely(r != 0)) | ||
679 | return r; | ||
680 | r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM, | ||
681 | &rdev->r600_blit.shader_gpu_addr); | ||
682 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | ||
683 | if (r) { | ||
684 | dev_err(rdev->dev, "(%d) pin blit object failed\n", r); | ||
685 | return r; | ||
686 | } | ||
676 | } | 687 | } |
677 | 688 | ||
678 | DRM_DEBUG("evergreen blit allocated bo %08x vs %08x ps %08x\n", | 689 | DRM_DEBUG("evergreen blit allocated bo %08x vs %08x ps %08x\n", |
@@ -714,17 +725,6 @@ int evergreen_blit_init(struct radeon_device *rdev) | |||
714 | radeon_bo_kunmap(rdev->r600_blit.shader_obj); | 725 | radeon_bo_kunmap(rdev->r600_blit.shader_obj); |
715 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | 726 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); |
716 | 727 | ||
717 | done: | ||
718 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | ||
719 | if (unlikely(r != 0)) | ||
720 | return r; | ||
721 | r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM, | ||
722 | &rdev->r600_blit.shader_gpu_addr); | ||
723 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | ||
724 | if (r) { | ||
725 | dev_err(rdev->dev, "(%d) pin blit object failed\n", r); | ||
726 | return r; | ||
727 | } | ||
728 | radeon_ttm_set_active_vram_size(rdev, rdev->mc.real_vram_size); | 728 | radeon_ttm_set_active_vram_size(rdev, rdev->mc.real_vram_size); |
729 | return 0; | 729 | return 0; |
730 | } | 730 | } |
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c index fe553102df82..4004376362ee 100644 --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c | |||
@@ -1316,7 +1316,6 @@ int cayman_suspend(struct radeon_device *rdev) | |||
1316 | { | 1316 | { |
1317 | r600_audio_fini(rdev); | 1317 | r600_audio_fini(rdev); |
1318 | radeon_vm_manager_suspend(rdev); | 1318 | radeon_vm_manager_suspend(rdev); |
1319 | r600_blit_suspend(rdev); | ||
1320 | cayman_cp_enable(rdev, false); | 1319 | cayman_cp_enable(rdev, false); |
1321 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; | 1320 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; |
1322 | evergreen_irq_suspend(rdev); | 1321 | evergreen_irq_suspend(rdev); |
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 9750f538cc86..af2f74a27081 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -2307,20 +2307,6 @@ int r600_copy_blit(struct radeon_device *rdev, | |||
2307 | return 0; | 2307 | return 0; |
2308 | } | 2308 | } |
2309 | 2309 | ||
2310 | void r600_blit_suspend(struct radeon_device *rdev) | ||
2311 | { | ||
2312 | int r; | ||
2313 | |||
2314 | /* unpin shaders bo */ | ||
2315 | if (rdev->r600_blit.shader_obj) { | ||
2316 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | ||
2317 | if (!r) { | ||
2318 | radeon_bo_unpin(rdev->r600_blit.shader_obj); | ||
2319 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | ||
2320 | } | ||
2321 | } | ||
2322 | } | ||
2323 | |||
2324 | int r600_set_surface_reg(struct radeon_device *rdev, int reg, | 2310 | int r600_set_surface_reg(struct radeon_device *rdev, int reg, |
2325 | uint32_t tiling_flags, uint32_t pitch, | 2311 | uint32_t tiling_flags, uint32_t pitch, |
2326 | uint32_t offset, uint32_t obj_size) | 2312 | uint32_t offset, uint32_t obj_size) |
@@ -2461,7 +2447,6 @@ int r600_resume(struct radeon_device *rdev) | |||
2461 | int r600_suspend(struct radeon_device *rdev) | 2447 | int r600_suspend(struct radeon_device *rdev) |
2462 | { | 2448 | { |
2463 | r600_audio_fini(rdev); | 2449 | r600_audio_fini(rdev); |
2464 | r600_blit_suspend(rdev); | ||
2465 | r600_cp_stop(rdev); | 2450 | r600_cp_stop(rdev); |
2466 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; | 2451 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; |
2467 | r600_irq_suspend(rdev); | 2452 | r600_irq_suspend(rdev); |
diff --git a/drivers/gpu/drm/radeon/r600_blit_kms.c b/drivers/gpu/drm/radeon/r600_blit_kms.c index 2b8d6418a30c..2bef8549ddfe 100644 --- a/drivers/gpu/drm/radeon/r600_blit_kms.c +++ b/drivers/gpu/drm/radeon/r600_blit_kms.c | |||
@@ -524,10 +524,6 @@ int r600_blit_init(struct radeon_device *rdev) | |||
524 | 524 | ||
525 | rdev->r600_blit.max_dim = 8192; | 525 | rdev->r600_blit.max_dim = 8192; |
526 | 526 | ||
527 | /* pin copy shader into vram if already initialized */ | ||
528 | if (rdev->r600_blit.shader_obj) | ||
529 | goto done; | ||
530 | |||
531 | rdev->r600_blit.state_offset = 0; | 527 | rdev->r600_blit.state_offset = 0; |
532 | 528 | ||
533 | if (rdev->family >= CHIP_RV770) | 529 | if (rdev->family >= CHIP_RV770) |
@@ -552,11 +548,26 @@ int r600_blit_init(struct radeon_device *rdev) | |||
552 | obj_size += r6xx_ps_size * 4; | 548 | obj_size += r6xx_ps_size * 4; |
553 | obj_size = ALIGN(obj_size, 256); | 549 | obj_size = ALIGN(obj_size, 256); |
554 | 550 | ||
555 | r = radeon_bo_create(rdev, obj_size, PAGE_SIZE, true, RADEON_GEM_DOMAIN_VRAM, | 551 | /* pin copy shader into vram if not already initialized */ |
556 | NULL, &rdev->r600_blit.shader_obj); | 552 | if (rdev->r600_blit.shader_obj == NULL) { |
557 | if (r) { | 553 | r = radeon_bo_create(rdev, obj_size, PAGE_SIZE, true, |
558 | DRM_ERROR("r600 failed to allocate shader\n"); | 554 | RADEON_GEM_DOMAIN_VRAM, |
559 | return r; | 555 | NULL, &rdev->r600_blit.shader_obj); |
556 | if (r) { | ||
557 | DRM_ERROR("r600 failed to allocate shader\n"); | ||
558 | return r; | ||
559 | } | ||
560 | |||
561 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | ||
562 | if (unlikely(r != 0)) | ||
563 | return r; | ||
564 | r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM, | ||
565 | &rdev->r600_blit.shader_gpu_addr); | ||
566 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | ||
567 | if (r) { | ||
568 | dev_err(rdev->dev, "(%d) pin blit object failed\n", r); | ||
569 | return r; | ||
570 | } | ||
560 | } | 571 | } |
561 | 572 | ||
562 | DRM_DEBUG("r6xx blit allocated bo %08x vs %08x ps %08x\n", | 573 | DRM_DEBUG("r6xx blit allocated bo %08x vs %08x ps %08x\n", |
@@ -587,17 +598,6 @@ int r600_blit_init(struct radeon_device *rdev) | |||
587 | radeon_bo_kunmap(rdev->r600_blit.shader_obj); | 598 | radeon_bo_kunmap(rdev->r600_blit.shader_obj); |
588 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | 599 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); |
589 | 600 | ||
590 | done: | ||
591 | r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false); | ||
592 | if (unlikely(r != 0)) | ||
593 | return r; | ||
594 | r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM, | ||
595 | &rdev->r600_blit.shader_gpu_addr); | ||
596 | radeon_bo_unreserve(rdev->r600_blit.shader_obj); | ||
597 | if (r) { | ||
598 | dev_err(rdev->dev, "(%d) pin blit object failed\n", r); | ||
599 | return r; | ||
600 | } | ||
601 | radeon_ttm_set_active_vram_size(rdev, rdev->mc.real_vram_size); | 601 | radeon_ttm_set_active_vram_size(rdev, rdev->mc.real_vram_size); |
602 | return 0; | 602 | return 0; |
603 | } | 603 | } |
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 7df76b9cc3af..8a8c3f82950e 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -735,8 +735,6 @@ struct r600_blit { | |||
735 | u32 state_len; | 735 | u32 state_len; |
736 | }; | 736 | }; |
737 | 737 | ||
738 | void r600_blit_suspend(struct radeon_device *rdev); | ||
739 | |||
740 | /* | 738 | /* |
741 | * SI RLC stuff | 739 | * SI RLC stuff |
742 | */ | 740 | */ |
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index cc0ffb9be2bd..2004f0d94f24 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
@@ -996,7 +996,6 @@ int rv770_resume(struct radeon_device *rdev) | |||
996 | int rv770_suspend(struct radeon_device *rdev) | 996 | int rv770_suspend(struct radeon_device *rdev) |
997 | { | 997 | { |
998 | r600_audio_fini(rdev); | 998 | r600_audio_fini(rdev); |
999 | r600_blit_suspend(rdev); | ||
1000 | r700_cp_stop(rdev); | 999 | r700_cp_stop(rdev); |
1001 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; | 1000 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; |
1002 | r600_irq_suspend(rdev); | 1001 | r600_irq_suspend(rdev); |
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c index 40405d302723..7c2618b9aa34 100644 --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c | |||
@@ -3810,9 +3810,6 @@ int si_resume(struct radeon_device *rdev) | |||
3810 | int si_suspend(struct radeon_device *rdev) | 3810 | int si_suspend(struct radeon_device *rdev) |
3811 | { | 3811 | { |
3812 | radeon_vm_manager_suspend(rdev); | 3812 | radeon_vm_manager_suspend(rdev); |
3813 | #if 0 | ||
3814 | r600_blit_suspend(rdev); | ||
3815 | #endif | ||
3816 | si_cp_enable(rdev, false); | 3813 | si_cp_enable(rdev, false); |
3817 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; | 3814 | rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready = false; |
3818 | rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX].ready = false; | 3815 | rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX].ready = false; |