drm/radeon/cik: switch to type3 nop packet for compute rings (v2)
authorAlex Deucher <alexander.deucher@amd.com>
Mon, 3 Jun 2013 15:21:58 +0000 (11:21 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 27 Jun 2013 14:49:09 +0000 (10:49 -0400)
Type 2 packets are deprecated on CIK MEC and we should use
type 3 nop packets.  Setting the count field to the max value
(0x3fff) indicates that only one dword should be skipped
like a type 2 packet.

v2: add comment to code

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
drivers/gpu/drm/radeon/cik.c

index c718a9ea50486020e59c18be6311857ad5422c6e..19a6b3c31304e6e5979ddd76124da303c73564cd 100644 (file)
@@ -5467,10 +5467,11 @@ static int cik_startup(struct radeon_device *rdev)
                return r;
 
        /* set up the compute queues */
+       /* type-2 packets are deprecated on MEC, use type-3 instead */
        ring = &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX];
        r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP1_RPTR_OFFSET,
                             CP_HQD_PQ_RPTR, CP_HQD_PQ_WPTR,
-                            0, 0xfffff, RADEON_CP_PACKET2);
+                            0, 0xfffff, PACKET3(PACKET3_NOP, 0x3FFF));
        if (r)
                return r;
        ring->me = 1; /* first MEC */
@@ -5478,10 +5479,11 @@ static int cik_startup(struct radeon_device *rdev)
        ring->queue = 0; /* first queue */
        ring->wptr_offs = CIK_WB_CP1_WPTR_OFFSET;
 
+       /* type-2 packets are deprecated on MEC, use type-3 instead */
        ring = &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX];
        r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP2_RPTR_OFFSET,
                             CP_HQD_PQ_RPTR, CP_HQD_PQ_WPTR,
-                            0, 0xffffffff, RADEON_CP_PACKET2);
+                            0, 0xffffffff, PACKET3(PACKET3_NOP, 0x3FFF));
        if (r)
                return r;
        /* dGPU only have 1 MEC */