@@ -1456,7 +1456,7 @@ static void gfx_v9_4_3_mqd_set_priority(struct amdgpu_ring *ring, struct v9_mqd
1456
1456
}
1457
1457
}
1458
1458
1459
- static int gfx_v9_4_3_mqd_init (struct amdgpu_ring * ring )
1459
+ static int gfx_v9_4_3_xcc_mqd_init (struct amdgpu_ring * ring , int xcc_id )
1460
1460
{
1461
1461
struct amdgpu_device * adev = ring -> adev ;
1462
1462
struct v9_mqd * mqd = ring -> mqd_ptr ;
@@ -1483,14 +1483,14 @@ static int gfx_v9_4_3_mqd_init(struct amdgpu_ring *ring)
1483
1483
mqd -> cp_hqd_eop_base_addr_hi = upper_32_bits (eop_base_addr );
1484
1484
1485
1485
/* set the EOP size, register value is 2^(EOP_SIZE+1) dwords */
1486
- tmp = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_HQD_EOP_CONTROL );
1486
+ tmp = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_HQD_EOP_CONTROL );
1487
1487
tmp = REG_SET_FIELD (tmp , CP_HQD_EOP_CONTROL , EOP_SIZE ,
1488
1488
(order_base_2 (GFX9_MEC_HPD_SIZE / 4 ) - 1 ));
1489
1489
1490
1490
mqd -> cp_hqd_eop_control = tmp ;
1491
1491
1492
1492
/* enable doorbell? */
1493
- tmp = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_HQD_PQ_DOORBELL_CONTROL );
1493
+ tmp = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_HQD_PQ_DOORBELL_CONTROL );
1494
1494
1495
1495
if (ring -> use_doorbell ) {
1496
1496
tmp = REG_SET_FIELD (tmp , CP_HQD_PQ_DOORBELL_CONTROL ,
@@ -1520,7 +1520,7 @@ static int gfx_v9_4_3_mqd_init(struct amdgpu_ring *ring)
1520
1520
mqd -> cp_mqd_base_addr_hi = upper_32_bits (ring -> mqd_gpu_addr );
1521
1521
1522
1522
/* set MQD vmid to 0 */
1523
- tmp = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_MQD_CONTROL );
1523
+ tmp = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_MQD_CONTROL );
1524
1524
tmp = REG_SET_FIELD (tmp , CP_MQD_CONTROL , VMID , 0 );
1525
1525
mqd -> cp_mqd_control = tmp ;
1526
1526
@@ -1530,7 +1530,7 @@ static int gfx_v9_4_3_mqd_init(struct amdgpu_ring *ring)
1530
1530
mqd -> cp_hqd_pq_base_hi = upper_32_bits (hqd_gpu_addr );
1531
1531
1532
1532
/* set up the HQD, this is similar to CP_RB0_CNTL */
1533
- tmp = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_HQD_PQ_CONTROL );
1533
+ tmp = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_HQD_PQ_CONTROL );
1534
1534
tmp = REG_SET_FIELD (tmp , CP_HQD_PQ_CONTROL , QUEUE_SIZE ,
1535
1535
(order_base_2 (ring -> ring_size / 4 ) - 1 ));
1536
1536
tmp = REG_SET_FIELD (tmp , CP_HQD_PQ_CONTROL , RPTR_BLOCK_SIZE ,
@@ -1557,23 +1557,23 @@ static int gfx_v9_4_3_mqd_init(struct amdgpu_ring *ring)
1557
1557
1558
1558
/* reset read and write pointers, similar to CP_RB0_WPTR/_RPTR */
1559
1559
ring -> wptr = 0 ;
1560
- mqd -> cp_hqd_pq_rptr = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_HQD_PQ_RPTR );
1560
+ mqd -> cp_hqd_pq_rptr = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_HQD_PQ_RPTR );
1561
1561
1562
1562
/* set the vmid for the queue */
1563
1563
mqd -> cp_hqd_vmid = 0 ;
1564
1564
1565
- tmp = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_HQD_PERSISTENT_STATE );
1565
+ tmp = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_HQD_PERSISTENT_STATE );
1566
1566
tmp = REG_SET_FIELD (tmp , CP_HQD_PERSISTENT_STATE , PRELOAD_SIZE , 0x53 );
1567
1567
mqd -> cp_hqd_persistent_state = tmp ;
1568
1568
1569
1569
/* set MIN_IB_AVAIL_SIZE */
1570
- tmp = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_HQD_IB_CONTROL );
1570
+ tmp = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_HQD_IB_CONTROL );
1571
1571
tmp = REG_SET_FIELD (tmp , CP_HQD_IB_CONTROL , MIN_IB_AVAIL_SIZE , 3 );
1572
1572
mqd -> cp_hqd_ib_control = tmp ;
1573
1573
1574
1574
/* set static priority for a queue/ring */
1575
1575
gfx_v9_4_3_mqd_set_priority (ring , mqd );
1576
- mqd -> cp_hqd_quantum = RREG32_SOC15 (GC , GET_INST (GC , 0 ), regCP_HQD_QUANTUM );
1576
+ mqd -> cp_hqd_quantum = RREG32_SOC15 (GC , GET_INST (GC , xcc_id ), regCP_HQD_QUANTUM );
1577
1577
1578
1578
/* map_queues packet doesn't need activate the queue,
1579
1579
* so only kiq need set this field.
@@ -1771,7 +1771,7 @@ static int gfx_v9_4_3_xcc_kiq_init_queue(struct amdgpu_ring *ring, int xcc_id)
1771
1771
((struct v9_mqd_allocation * )mqd )-> dynamic_rb_mask = 0xFFFFFFFF ;
1772
1772
mutex_lock (& adev -> srbm_mutex );
1773
1773
soc15_grbm_select (adev , ring -> me , ring -> pipe , ring -> queue , 0 , GET_INST (GC , xcc_id ));
1774
- gfx_v9_4_3_mqd_init (ring );
1774
+ gfx_v9_4_3_xcc_mqd_init (ring , xcc_id );
1775
1775
gfx_v9_4_3_xcc_kiq_init_register (ring , xcc_id );
1776
1776
soc15_grbm_select (adev , 0 , 0 , 0 , 0 , GET_INST (GC , xcc_id ));
1777
1777
mutex_unlock (& adev -> srbm_mutex );
@@ -1802,7 +1802,7 @@ static int gfx_v9_4_3_xcc_kcq_init_queue(struct amdgpu_ring *ring, int xcc_id)
1802
1802
((struct v9_mqd_allocation * )mqd )-> dynamic_rb_mask = 0xFFFFFFFF ;
1803
1803
mutex_lock (& adev -> srbm_mutex );
1804
1804
soc15_grbm_select (adev , ring -> me , ring -> pipe , ring -> queue , 0 , GET_INST (GC , xcc_id ));
1805
- gfx_v9_4_3_mqd_init (ring );
1805
+ gfx_v9_4_3_xcc_mqd_init (ring , xcc_id );
1806
1806
soc15_grbm_select (adev , 0 , 0 , 0 , 0 , GET_INST (GC , xcc_id ));
1807
1807
mutex_unlock (& adev -> srbm_mutex );
1808
1808
0 commit comments