Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: use packet2 for nop on hawaii with old firmware

Older firmware didn't support the new nop packet.

v2 (Andreas Boll):
- Drop usage of packet3 for new firmware

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com> (v1)
Signed-off-by: Andreas Boll <andreas.boll.dev@gmail.com>
Cc: stable@vger.kernel.org

+10 -3
+10 -3
drivers/gpu/drm/radeon/cik.c
··· 8259 8259 static int cik_startup(struct radeon_device *rdev) 8260 8260 { 8261 8261 struct radeon_ring *ring; 8262 + u32 nop; 8262 8263 int r; 8263 8264 8264 8265 /* enable pcie gen2/3 link */ ··· 8393 8392 } 8394 8393 cik_irq_set(rdev); 8395 8394 8395 + if (rdev->family == CHIP_HAWAII) { 8396 + nop = RADEON_CP_PACKET2; 8397 + } else { 8398 + nop = PACKET3(PACKET3_NOP, 0x3FFF); 8399 + } 8400 + 8396 8401 ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; 8397 8402 r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET, 8398 - PACKET3(PACKET3_NOP, 0x3FFF)); 8403 + nop); 8399 8404 if (r) 8400 8405 return r; 8401 8406 ··· 8409 8402 /* type-2 packets are deprecated on MEC, use type-3 instead */ 8410 8403 ring = &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX]; 8411 8404 r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP1_RPTR_OFFSET, 8412 - PACKET3(PACKET3_NOP, 0x3FFF)); 8405 + nop); 8413 8406 if (r) 8414 8407 return r; 8415 8408 ring->me = 1; /* first MEC */ ··· 8420 8413 /* type-2 packets are deprecated on MEC, use type-3 instead */ 8421 8414 ring = &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX]; 8422 8415 r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP2_RPTR_OFFSET, 8423 - PACKET3(PACKET3_NOP, 0x3FFF)); 8416 + nop); 8424 8417 if (r) 8425 8418 return r; 8426 8419 /* dGPU only have 1 MEC */