Skip to content

Commit 81faf9e

Browse files
mukjoshialexdeucher
authored andcommitted
drm/amdkfd: Fix reg offset for setting CWSR grace period
This patch fixes the case where the code currently passes absolute register address and not the reg offset, which HWS expects, when sending the PM4 packet to set/update CWSR grace period. Additionally, cleanup the signature of build_grace_period_packet_info function as it no longer needs the inst parameter. Signed-off-by: Mukul Joshi <mukul.joshi@amd.com> Reviewed-by: Jonathan Kim <jonathan.kim@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent afaf2b3 commit 81faf9e

7 files changed

Lines changed: 8 additions & 16 deletions

File tree

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -980,8 +980,7 @@ void kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device *adev,
980980
uint32_t wait_times,
981981
uint32_t grace_period,
982982
uint32_t *reg_offset,
983-
uint32_t *reg_data,
984-
uint32_t inst)
983+
uint32_t *reg_data)
985984
{
986985
*reg_data = wait_times;
987986

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,4 @@ void kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device *adev,
5555
uint32_t wait_times,
5656
uint32_t grace_period,
5757
uint32_t *reg_offset,
58-
uint32_t *reg_data,
59-
uint32_t inst);
58+
uint32_t *reg_data);

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,8 +1103,7 @@ void kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev,
11031103
uint32_t wait_times,
11041104
uint32_t grace_period,
11051105
uint32_t *reg_offset,
1106-
uint32_t *reg_data,
1107-
uint32_t inst)
1106+
uint32_t *reg_data)
11081107
{
11091108
*reg_data = wait_times;
11101109

@@ -1120,8 +1119,7 @@ void kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev,
11201119
SCH_WAVE,
11211120
grace_period);
11221121

1123-
*reg_offset = SOC15_REG_OFFSET(GC, GET_INST(GC, inst),
1124-
mmCP_IQ_WAIT_TIME2);
1122+
*reg_offset = SOC15_REG_OFFSET(GC, 0, mmCP_IQ_WAIT_TIME2);
11251123
}
11261124

11271125
void kgd_gfx_v9_program_trap_handler_settings(struct amdgpu_device *adev,

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,4 @@ void kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev,
100100
uint32_t wait_times,
101101
uint32_t grace_period,
102102
uint32_t *reg_offset,
103-
uint32_t *reg_data,
104-
uint32_t inst);
103+
uint32_t *reg_data);

drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1677,8 +1677,7 @@ static int start_cpsch(struct device_queue_manager *dqm)
16771677
dqm->dev->kfd2kgd->build_grace_period_packet_info(
16781678
dqm->dev->adev, dqm->wait_times,
16791679
grace_period, &reg_offset,
1680-
&dqm->wait_times,
1681-
ffs(dqm->dev->xcc_mask) - 1);
1680+
&dqm->wait_times);
16821681
}
16831682

16841683
dqm_unlock(dqm);

drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,7 @@ static int pm_set_grace_period_v9(struct packet_manager *pm,
299299
pm->dqm->wait_times,
300300
grace_period,
301301
&reg_offset,
302-
&reg_data,
303-
0);
302+
&reg_data);
304303

305304
if (grace_period == USE_DEFAULT_GRACE_PERIOD)
306305
reg_data = pm->dqm->wait_times;

drivers/gpu/drm/amd/include/kgd_kfd_interface.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,7 @@ struct kfd2kgd_calls {
326326
uint32_t wait_times,
327327
uint32_t grace_period,
328328
uint32_t *reg_offset,
329-
uint32_t *reg_data,
330-
uint32_t inst);
329+
uint32_t *reg_data);
331330
void (*get_cu_occupancy)(struct amdgpu_device *adev, int pasid,
332331
int *wave_cnt, int *max_waves_per_cu, uint32_t inst);
333332
void (*program_trap_handler_settings)(struct amdgpu_device *adev,

0 commit comments

Comments
 (0)