aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r600.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2011-08-25 13:39:48 -0400
committerDave Airlie <airlied@redhat.com>2011-12-20 14:49:28 -0500
commit7465280c076d6440e5908c158c83b542dc063a30 (patch)
tree7781cffcc3784293e5bb97f20fb4a6c8109684ec /drivers/gpu/drm/radeon/r600.c
parent851a6bd99edda0094def3b0b81bb1c7c0e886e65 (diff)
drm/radeon/kms: add support for multiple fence queues v2
For supporting multiple CP ring buffers, async DMA engines and UVD. We still need a way to synchronize between engines. v2 initialize unused fence driver ring to avoid issue in suspend/unload Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r600.c')
-rw-r--r--drivers/gpu/drm/radeon/r600.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 9cdda0b3b081..2fff8cec723c 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2316,7 +2316,7 @@ void r600_fence_ring_emit(struct radeon_device *rdev,
2316{ 2316{
2317 if (rdev->wb.use_event) { 2317 if (rdev->wb.use_event) {
2318 u64 addr = rdev->wb.gpu_addr + R600_WB_EVENT_OFFSET + 2318 u64 addr = rdev->wb.gpu_addr + R600_WB_EVENT_OFFSET +
2319 (u64)(rdev->fence_drv.scratch_reg - rdev->scratch.reg_base); 2319 (u64)(rdev->fence_drv[fence->ring].scratch_reg - rdev->scratch.reg_base);
2320 /* flush read cache over gart */ 2320 /* flush read cache over gart */
2321 radeon_ring_write(rdev, PACKET3(PACKET3_SURFACE_SYNC, 3)); 2321 radeon_ring_write(rdev, PACKET3(PACKET3_SURFACE_SYNC, 3));
2322 radeon_ring_write(rdev, PACKET3_TC_ACTION_ENA | 2322 radeon_ring_write(rdev, PACKET3_TC_ACTION_ENA |
@@ -2349,7 +2349,7 @@ void r600_fence_ring_emit(struct radeon_device *rdev,
2349 radeon_ring_write(rdev, WAIT_3D_IDLE_bit | WAIT_3D_IDLECLEAN_bit); 2349 radeon_ring_write(rdev, WAIT_3D_IDLE_bit | WAIT_3D_IDLECLEAN_bit);
2350 /* Emit fence sequence & fire IRQ */ 2350 /* Emit fence sequence & fire IRQ */
2351 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONFIG_REG, 1)); 2351 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONFIG_REG, 1));
2352 radeon_ring_write(rdev, ((rdev->fence_drv.scratch_reg - PACKET3_SET_CONFIG_REG_OFFSET) >> 2)); 2352 radeon_ring_write(rdev, ((rdev->fence_drv[fence->ring].scratch_reg - PACKET3_SET_CONFIG_REG_OFFSET) >> 2));
2353 radeon_ring_write(rdev, fence->seq); 2353 radeon_ring_write(rdev, fence->seq);
2354 /* CP_INTERRUPT packet 3 no longer exists, use packet 0 */ 2354 /* CP_INTERRUPT packet 3 no longer exists, use packet 0 */
2355 radeon_ring_write(rdev, PACKET0(CP_INT_STATUS, 0)); 2355 radeon_ring_write(rdev, PACKET0(CP_INT_STATUS, 0));
@@ -2575,7 +2575,7 @@ int r600_init(struct radeon_device *rdev)
2575 /* Initialize clocks */ 2575 /* Initialize clocks */
2576 radeon_get_clock_info(rdev->ddev); 2576 radeon_get_clock_info(rdev->ddev);
2577 /* Fence driver */ 2577 /* Fence driver */
2578 r = radeon_fence_driver_init(rdev); 2578 r = radeon_fence_driver_init(rdev, 1);
2579 if (r) 2579 if (r)
2580 return r; 2580 return r;
2581 if (rdev->flags & RADEON_IS_AGP) { 2581 if (rdev->flags & RADEON_IS_AGP) {
@@ -3459,11 +3459,11 @@ restart_ih:
3459 case 177: /* CP_INT in IB1 */ 3459 case 177: /* CP_INT in IB1 */
3460 case 178: /* CP_INT in IB2 */ 3460 case 178: /* CP_INT in IB2 */
3461 DRM_DEBUG("IH: CP int: 0x%08x\n", src_data); 3461 DRM_DEBUG("IH: CP int: 0x%08x\n", src_data);
3462 radeon_fence_process(rdev); 3462 radeon_fence_process(rdev, RADEON_RING_TYPE_GFX_INDEX);
3463 break; 3463 break;
3464 case 181: /* CP EOP event */ 3464 case 181: /* CP EOP event */
3465 DRM_DEBUG("IH: CP EOP\n"); 3465 DRM_DEBUG("IH: CP EOP\n");
3466 radeon_fence_process(rdev); 3466 radeon_fence_process(rdev, RADEON_RING_TYPE_GFX_INDEX);
3467 break; 3467 break;
3468 case 233: /* GUI IDLE */ 3468 case 233: /* GUI IDLE */
3469 DRM_DEBUG("IH: GUI idle\n"); 3469 DRM_DEBUG("IH: GUI idle\n");