RE: [PATCH 3/4] drm/amdgpu: Don't modify grace_period in helper function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[Public]

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Harish
> Kasiviswanathan
> Sent: Wednesday, February 12, 2025 5:04 PM
> To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
> Cc: Kasiviswanathan, Harish <Harish.Kasiviswanathan@xxxxxxx>
> Subject: [PATCH 3/4] drm/amdgpu: Don't modify grace_period in helper function
>
> build_grace_period_packet_info is asic helper function that fetches the
> correct format. It is the responsibility of the caller to validate the
> value.
>
> Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@xxxxxxx>
> ---
>  .../drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c    | 18 +++++----------
>  .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 17 +++++---------
>  .../drm/amd/amdkfd/kfd_packet_manager_v9.c    | 23 +++++++++++++------
>  3 files changed, 28 insertions(+), 30 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 62176d607bef..8e72dcff8867 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
> @@ -1029,18 +1029,12 @@ void
> kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device *adev,
>  {
>       *reg_data = wait_times;
>
> -     /*
> -      * The CP cannont handle a 0 grace period input and will result in
> -      * an infinite grace period being set so set to 1 to prevent this.
> -      */
> -     if (grace_period == 0)
> -             grace_period = 1;
> -
> -     *reg_data = REG_SET_FIELD(*reg_data,
> -                     CP_IQ_WAIT_TIME2,
> -                     SCH_WAVE,
> -                     grace_period);
> -
> +     if (grace_period) {

Should we get rid of the notion of grace_period in the function name as well as the param since you're doing it for the rest of the patch?

> +             *reg_data = REG_SET_FIELD(*reg_data,
> +                             CP_IQ_WAIT_TIME2,
> +                             SCH_WAVE,
> +                             grace_period);
> +     }
>       *reg_offset = SOC15_REG_OFFSET(GC, 0, mmCP_IQ_WAIT_TIME2);
>  }
>
> 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 441568163e20..04c86a229a23 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
> @@ -1085,17 +1085,12 @@ void
> kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev,
>  {
>       *reg_data = wait_times;
>
> -     /*
> -      * The CP cannot handle a 0 grace period input and will result in
> -      * an infinite grace period being set so set to 1 to prevent this.
> -      */
> -     if (grace_period == 0)
> -             grace_period = 1;
> -
> -     *reg_data = REG_SET_FIELD(*reg_data,
> -                     CP_IQ_WAIT_TIME2,
> -                     SCH_WAVE,
> -                     grace_period);
> +     if (grace_period) {
> +             *reg_data = REG_SET_FIELD(*reg_data,
> +                             CP_IQ_WAIT_TIME2,
> +                             SCH_WAVE,
> +                             grace_period);
> +     }
>
>       *reg_offset = SOC15_REG_OFFSET(GC, 0, mmCP_IQ_WAIT_TIME2);
>  }
> 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 6a5ddadec936..ecabf95d972f 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
> @@ -307,13 +307,22 @@ static int pm_set_compute_queue_wait_counts_v9(struct
> packet_manager *pm,
>       uint32_t reg_data = 0;
>
>       if (wait_counts_config == KFD_INIT_CP_QUEUE_WAIT_TIMES) {
> -                /* Set CWSR grace period to 1x1000 cycle for GFX9.4.3 APU */
> -                if (amdgpu_emu_mode == 0 && dqm->dev->adev->gmc.is_app_apu &&
> -                    KFD_GC_VERSION(dqm->dev) == IP_VERSION(9, 4, 3))
> -                        wait_counts_config = 1;
> -                else
> -                        return 0;
> -        }
> +             /* Set CWSR grace period to 1x1000 cycle for GFX9.4.3 APU */
> +             if (amdgpu_emu_mode == 0 && dqm->dev->adev->gmc.is_app_apu
> &&
> +                 KFD_GC_VERSION(dqm->dev) == IP_VERSION(9, 4, 3))
> +                     wait_counts_config = 1;
> +             else
> +                     return 0;
> +     } else if (!wait_counts_config)
> +             /*
> +              * NOTE: The CP cannot handle a 0 grace period input and will result
> in
> +              * an infinite grace period being. This is not an issue here since 0
> +              * would just set it to default value.
> +              * However, grace_period needs to be explicitly set to 1 for avoiding
> +              * any breakage for existing debugger user interface. Currently,
> +              * debugger interface expects value 1 when set to 0.
> +              */
> +             wait_counts_config = 1;

If you decide to follow my suggestions for patch 2, then you would only need the else-if condition.

Jon

>
>       pm->dqm->dev->kfd2kgd->build_grace_period_packet_info(
>                       pm->dqm->dev->adev,
> --
> 2.34.1





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux