[Public] > -----Original Message----- > From: Joshi, Mukul <Mukul.Joshi@xxxxxxx> > Sent: Tuesday, August 29, 2023 10:55 AM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Kuehling, Felix <Felix.Kuehling@xxxxxxx>; Kim, Jonathan > <Jonathan.Kim@xxxxxxx>; Joshi, Mukul <Mukul.Joshi@xxxxxxx> > Subject: [PATCH] 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@xxxxxxx> Reviewed-by: Jonathan Kim <jonathan.kim@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c | 3 +-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h | 3 +-- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 6 ++---- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h | 3 +-- > drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 3 +-- > drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c | 3 +-- > drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 3 +-- > 7 files changed, 8 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > index f1f2c24de081..69810b3f1c63 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c > @@ -980,8 +980,7 @@ void > kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device *adev, > uint32_t wait_times, > uint32_t grace_period, > uint32_t *reg_offset, > - uint32_t *reg_data, > - uint32_t inst) > + uint32_t *reg_data) > { > *reg_data = wait_times; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > index ecaead24e8c9..67bcaa3d4226 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h > @@ -55,5 +55,4 @@ void > kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device *adev, > uint32_t wait_times, > uint32_t grace_period, > uint32_t *reg_offset, > - uint32_t *reg_data, > - uint32_t inst); > + uint32_t *reg_data); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > index fa5ee96f8845..3c45a188b701 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c > @@ -1103,8 +1103,7 @@ void > kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev, > uint32_t wait_times, > uint32_t grace_period, > uint32_t *reg_offset, > - uint32_t *reg_data, > - uint32_t inst) > + uint32_t *reg_data) > { > *reg_data = wait_times; > > @@ -1120,8 +1119,7 @@ void > kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev, > SCH_WAVE, > grace_period); > > - *reg_offset = SOC15_REG_OFFSET(GC, GET_INST(GC, inst), > - mmCP_IQ_WAIT_TIME2); > + *reg_offset = SOC15_REG_OFFSET(GC, 0, mmCP_IQ_WAIT_TIME2); > } > > void kgd_gfx_v9_program_trap_handler_settings(struct amdgpu_device > *adev, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > index 936e501908ce..ce424615f59b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h > @@ -100,5 +100,4 @@ void > kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev, > uint32_t wait_times, > uint32_t grace_period, > uint32_t *reg_offset, > - uint32_t *reg_data, > - uint32_t inst); > + uint32_t *reg_data); > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > index b166f30f083e..8a6cb41444a4 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > @@ -1677,8 +1677,7 @@ static int start_cpsch(struct device_queue_manager > *dqm) > dqm->dev->kfd2kgd- > >build_grace_period_packet_info( > dqm->dev->adev, dqm- > >wait_times, > grace_period, ®_offset, > - &dqm->wait_times, > - ffs(dqm->dev->xcc_mask) - 1); > + &dqm->wait_times); > } > > dqm_unlock(dqm); > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c > b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c > index 8ce6f5200905..1a03173e2313 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c > @@ -299,8 +299,7 @@ static int pm_set_grace_period_v9(struct > packet_manager *pm, > pm->dqm->wait_times, > grace_period, > ®_offset, > - ®_data, > - 0); > + ®_data); > > if (grace_period == USE_DEFAULT_GRACE_PERIOD) > reg_data = pm->dqm->wait_times; > diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > index 679e8d6a5a2e..3b5a56585c4b 100644 > --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h > @@ -326,8 +326,7 @@ struct kfd2kgd_calls { > uint32_t wait_times, > uint32_t grace_period, > uint32_t *reg_offset, > - uint32_t *reg_data, > - uint32_t inst); > + uint32_t *reg_data); > void (*get_cu_occupancy)(struct amdgpu_device *adev, int pasid, > int *wave_cnt, int *max_waves_per_cu, uint32_t > inst); > void (*program_trap_handler_settings)(struct amdgpu_device *adev, > -- > 2.35.1