diff options
| author | Michel Dänzer <michel.daenzer@amd.com> | 2014-08-18 04:34:55 -0400 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2014-08-18 17:09:44 -0400 |
| commit | 1538a9e0e04f6a5b323cd3d65e9320512978fcec (patch) | |
| tree | 8d1e092ae58aaf415a2bdea57ee43858651333b2 /drivers/gpu | |
| parent | 701e1e789142042144c8cc10b8f6d1554e960144 (diff) | |
drm/radeon: Only flush HDP cache for indirect buffers from userspace
It isn't necessary for command streams generated by the kernel (at least
not while we aren't storing ring or indirect buffers in VRAM).
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
25 files changed, 73 insertions, 66 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c index e7d99e1547cc..d61bc1841d5e 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c | |||
| @@ -3801,7 +3801,7 @@ int cik_ring_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 3801 | radeon_ring_write(ring, PACKET3(PACKET3_SET_UCONFIG_REG, 1)); | 3801 | radeon_ring_write(ring, PACKET3(PACKET3_SET_UCONFIG_REG, 1)); |
| 3802 | radeon_ring_write(ring, ((scratch - PACKET3_SET_UCONFIG_REG_START) >> 2)); | 3802 | radeon_ring_write(ring, ((scratch - PACKET3_SET_UCONFIG_REG_START) >> 2)); |
| 3803 | radeon_ring_write(ring, 0xDEADBEEF); | 3803 | radeon_ring_write(ring, 0xDEADBEEF); |
| 3804 | radeon_ring_unlock_commit(rdev, ring); | 3804 | radeon_ring_unlock_commit(rdev, ring, false); |
| 3805 | 3805 | ||
| 3806 | for (i = 0; i < rdev->usec_timeout; i++) { | 3806 | for (i = 0; i < rdev->usec_timeout; i++) { |
| 3807 | tmp = RREG32(scratch); | 3807 | tmp = RREG32(scratch); |
| @@ -4004,7 +4004,7 @@ int cik_copy_cpdma(struct radeon_device *rdev, | |||
| 4004 | return r; | 4004 | return r; |
| 4005 | } | 4005 | } |
| 4006 | 4006 | ||
| 4007 | radeon_ring_unlock_commit(rdev, ring); | 4007 | radeon_ring_unlock_commit(rdev, ring, false); |
| 4008 | radeon_semaphore_free(rdev, &sem, *fence); | 4008 | radeon_semaphore_free(rdev, &sem, *fence); |
| 4009 | 4009 | ||
| 4010 | return r; | 4010 | return r; |
| @@ -4103,7 +4103,7 @@ int cik_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 4103 | ib.ptr[1] = ((scratch - PACKET3_SET_UCONFIG_REG_START) >> 2); | 4103 | ib.ptr[1] = ((scratch - PACKET3_SET_UCONFIG_REG_START) >> 2); |
| 4104 | ib.ptr[2] = 0xDEADBEEF; | 4104 | ib.ptr[2] = 0xDEADBEEF; |
| 4105 | ib.length_dw = 3; | 4105 | ib.length_dw = 3; |
| 4106 | r = radeon_ib_schedule(rdev, &ib, NULL); | 4106 | r = radeon_ib_schedule(rdev, &ib, NULL, false); |
| 4107 | if (r) { | 4107 | if (r) { |
| 4108 | radeon_scratch_free(rdev, scratch); | 4108 | radeon_scratch_free(rdev, scratch); |
| 4109 | radeon_ib_free(rdev, &ib); | 4109 | radeon_ib_free(rdev, &ib); |
| @@ -4324,7 +4324,7 @@ static int cik_cp_gfx_start(struct radeon_device *rdev) | |||
| 4324 | radeon_ring_write(ring, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */ | 4324 | radeon_ring_write(ring, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */ |
| 4325 | radeon_ring_write(ring, 0x00000010); /* VGT_OUT_DEALLOC_CNTL */ | 4325 | radeon_ring_write(ring, 0x00000010); /* VGT_OUT_DEALLOC_CNTL */ |
| 4326 | 4326 | ||
| 4327 | radeon_ring_unlock_commit(rdev, ring); | 4327 | radeon_ring_unlock_commit(rdev, ring, false); |
| 4328 | 4328 | ||
| 4329 | return 0; | 4329 | return 0; |
| 4330 | } | 4330 | } |
diff --git a/drivers/gpu/drm/radeon/cik_sdma.c b/drivers/gpu/drm/radeon/cik_sdma.c index bcf480510ac2..192278bc993c 100644 --- a/drivers/gpu/drm/radeon/cik_sdma.c +++ b/drivers/gpu/drm/radeon/cik_sdma.c | |||
| @@ -596,7 +596,7 @@ int cik_copy_dma(struct radeon_device *rdev, | |||
| 596 | return r; | 596 | return r; |
| 597 | } | 597 | } |
| 598 | 598 | ||
| 599 | radeon_ring_unlock_commit(rdev, ring); | 599 | radeon_ring_unlock_commit(rdev, ring, false); |
| 600 | radeon_semaphore_free(rdev, &sem, *fence); | 600 | radeon_semaphore_free(rdev, &sem, *fence); |
| 601 | 601 | ||
| 602 | return r; | 602 | return r; |
| @@ -638,7 +638,7 @@ int cik_sdma_ring_test(struct radeon_device *rdev, | |||
| 638 | radeon_ring_write(ring, upper_32_bits(rdev->vram_scratch.gpu_addr)); | 638 | radeon_ring_write(ring, upper_32_bits(rdev->vram_scratch.gpu_addr)); |
| 639 | radeon_ring_write(ring, 1); /* number of DWs to follow */ | 639 | radeon_ring_write(ring, 1); /* number of DWs to follow */ |
| 640 | radeon_ring_write(ring, 0xDEADBEEF); | 640 | radeon_ring_write(ring, 0xDEADBEEF); |
| 641 | radeon_ring_unlock_commit(rdev, ring); | 641 | radeon_ring_unlock_commit(rdev, ring, false); |
| 642 | 642 | ||
| 643 | for (i = 0; i < rdev->usec_timeout; i++) { | 643 | for (i = 0; i < rdev->usec_timeout; i++) { |
| 644 | tmp = readl(ptr); | 644 | tmp = readl(ptr); |
| @@ -695,7 +695,7 @@ int cik_sdma_ib_test(struct radeon_device *rdev, struct radeon_ring *ring) | |||
| 695 | ib.ptr[4] = 0xDEADBEEF; | 695 | ib.ptr[4] = 0xDEADBEEF; |
| 696 | ib.length_dw = 5; | 696 | ib.length_dw = 5; |
| 697 | 697 | ||
| 698 | r = radeon_ib_schedule(rdev, &ib, NULL); | 698 | r = radeon_ib_schedule(rdev, &ib, NULL, false); |
| 699 | if (r) { | 699 | if (r) { |
| 700 | radeon_ib_free(rdev, &ib); | 700 | radeon_ib_free(rdev, &ib); |
| 701 | DRM_ERROR("radeon: failed to schedule ib (%d).\n", r); | 701 | DRM_ERROR("radeon: failed to schedule ib (%d).\n", r); |
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 4fedd14e670a..dbca60c7d097 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
| @@ -2869,7 +2869,7 @@ static int evergreen_cp_start(struct radeon_device *rdev) | |||
| 2869 | radeon_ring_write(ring, PACKET3_ME_INITIALIZE_DEVICE_ID(1)); | 2869 | radeon_ring_write(ring, PACKET3_ME_INITIALIZE_DEVICE_ID(1)); |
| 2870 | radeon_ring_write(ring, 0); | 2870 | radeon_ring_write(ring, 0); |
| 2871 | radeon_ring_write(ring, 0); | 2871 | radeon_ring_write(ring, 0); |
| 2872 | radeon_ring_unlock_commit(rdev, ring); | 2872 | radeon_ring_unlock_commit(rdev, ring, false); |
| 2873 | 2873 | ||
| 2874 | cp_me = 0xff; | 2874 | cp_me = 0xff; |
| 2875 | WREG32(CP_ME_CNTL, cp_me); | 2875 | WREG32(CP_ME_CNTL, cp_me); |
| @@ -2912,7 +2912,7 @@ static int evergreen_cp_start(struct radeon_device *rdev) | |||
| 2912 | radeon_ring_write(ring, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */ | 2912 | radeon_ring_write(ring, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */ |
| 2913 | radeon_ring_write(ring, 0x00000010); /* */ | 2913 | radeon_ring_write(ring, 0x00000010); /* */ |
| 2914 | 2914 | ||
| 2915 | radeon_ring_unlock_commit(rdev, ring); | 2915 | radeon_ring_unlock_commit(rdev, ring, false); |
| 2916 | 2916 | ||
| 2917 | return 0; | 2917 | return 0; |
| 2918 | } | 2918 | } |
diff --git a/drivers/gpu/drm/radeon/evergreen_dma.c b/drivers/gpu/drm/radeon/evergreen_dma.c index 478caefe0fef..afaba388c36d 100644 --- a/drivers/gpu/drm/radeon/evergreen_dma.c +++ b/drivers/gpu/drm/radeon/evergreen_dma.c | |||
| @@ -155,7 +155,7 @@ int evergreen_copy_dma(struct radeon_device *rdev, | |||
| 155 | return r; | 155 | return r; |
| 156 | } | 156 | } |
| 157 | 157 | ||
| 158 | radeon_ring_unlock_commit(rdev, ring); | 158 | radeon_ring_unlock_commit(rdev, ring, false); |
| 159 | radeon_semaphore_free(rdev, &sem, *fence); | 159 | radeon_semaphore_free(rdev, &sem, *fence); |
| 160 | 160 | ||
| 161 | return r; | 161 | return r; |
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c index 327b85f7fd0d..ba89375f197f 100644 --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c | |||
| @@ -1505,7 +1505,7 @@ static int cayman_cp_start(struct radeon_device *rdev) | |||
| 1505 | radeon_ring_write(ring, PACKET3_ME_INITIALIZE_DEVICE_ID(1)); | 1505 | radeon_ring_write(ring, PACKET3_ME_INITIALIZE_DEVICE_ID(1)); |
| 1506 | radeon_ring_write(ring, 0); | 1506 | radeon_ring_write(ring, 0); |
| 1507 | radeon_ring_write(ring, 0); | 1507 | radeon_ring_write(ring, 0); |
| 1508 | radeon_ring_unlock_commit(rdev, ring); | 1508 | radeon_ring_unlock_commit(rdev, ring, false); |
| 1509 | 1509 | ||
| 1510 | cayman_cp_enable(rdev, true); | 1510 | cayman_cp_enable(rdev, true); |
| 1511 | 1511 | ||
| @@ -1547,7 +1547,7 @@ static int cayman_cp_start(struct radeon_device *rdev) | |||
| 1547 | radeon_ring_write(ring, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */ | 1547 | radeon_ring_write(ring, 0x0000000e); /* VGT_VERTEX_REUSE_BLOCK_CNTL */ |
| 1548 | radeon_ring_write(ring, 0x00000010); /* */ | 1548 | radeon_ring_write(ring, 0x00000010); /* */ |
| 1549 | 1549 | ||
| 1550 | radeon_ring_unlock_commit(rdev, ring); | 1550 | radeon_ring_unlock_commit(rdev, ring, false); |
| 1551 | 1551 | ||
| 1552 | /* XXX init other rings */ | 1552 | /* XXX init other rings */ |
| 1553 | 1553 | ||
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index 04b5940b8923..4c5ec44ff328 100644 --- a/drivers/g | |||
