[PATCH 3/3] drm/amdgpu: Issue ras enable_feature for gfx ip only

Zhou1, Tao Tao.Zhou1 at amd.com
Tue Jul 4 04:00:41 UTC 2023


[AMD Official Use Only - General]

The series is:

Reviewed-by: Tao Zhou <tao.zhou1 at amd.com>

> -----Original Message-----
> From: Zhang, Hawking <Hawking.Zhang at amd.com>
> Sent: Monday, July 3, 2023 4:56 PM
> To: amd-gfx at lists.freedesktop.org; Zhou1, Tao <Tao.Zhou1 at amd.com>; Yang,
> Stanley <Stanley.Yang at amd.com>; Chai, Thomas <YiPeng.Chai at amd.com>; Li,
> Candice <Candice.Li at amd.com>
> Cc: Zhang, Hawking <Hawking.Zhang at amd.com>
> Subject: [PATCH 3/3] drm/amdgpu: Issue ras enable_feature for gfx ip only
>
> For non-GFX IP blocks, set up ras obj if ras feature is allowed. For GFX IP blocks,
> force issue ras enable_feature command to firmware and only set up ras obj if ras
> feature is allowed
>
> Signed-off-by: Hawking Zhang <Hawking.Zhang at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 30 +++++++++----------------
>  1 file changed, 10 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> index 8524365761b6..2e9154bbec64 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> @@ -761,16 +761,6 @@ static int __amdgpu_ras_feature_enable(struct
> amdgpu_device *adev,
>       return 0;
>  }
>
> -static int amdgpu_ras_check_feature_allowed(struct amdgpu_device *adev,
> -             struct ras_common_if *head)
> -{
> -     if (amdgpu_ras_is_feature_allowed(adev, head) ||
> -             amdgpu_ras_is_poison_mode_supported(adev))
> -             return 1;
> -     else
> -             return 0;
> -}
> -
>  /* wrapper of psp_ras_enable_features */  int
> amdgpu_ras_feature_enable(struct amdgpu_device *adev,
>               struct ras_common_if *head, bool enable) @@ -782,7 +772,16
> @@ int amdgpu_ras_feature_enable(struct amdgpu_device *adev,
>       if (!con)
>               return -EINVAL;
>
> -     if (head->block == AMDGPU_RAS_BLOCK__GFX) {
> +     /* Do not enable ras feature if it is not allowed */
> +     if (enable &&
> +         head->block != AMDGPU_RAS_BLOCK__GFX &&
> +         !amdgpu_ras_is_feature_allowed(adev, head))
> +             goto out;
> +
> +     /* Only enable gfx ras feature from host side */
> +     if (head->block == AMDGPU_RAS_BLOCK__GFX &&
> +         !amdgpu_sriov_vf(adev) &&
> +         !amdgpu_ras_intr_triggered()) {
>               info = kzalloc(sizeof(union ta_ras_cmd_input), GFP_KERNEL);
>               if (!info)
>                       return -ENOMEM;
> @@ -798,16 +797,7 @@ int amdgpu_ras_feature_enable(struct amdgpu_device
> *adev,
>                               .error_type = amdgpu_ras_error_to_ta(head-
> >type),
>                       };
>               }
> -     }
>
> -     /* Do not enable if it is not allowed. */
> -     if (enable && !amdgpu_ras_check_feature_allowed(adev, head))
> -             goto out;
> -
> -     /* Only enable ras feature operation handle on host side */
> -     if (head->block == AMDGPU_RAS_BLOCK__GFX &&
> -             !amdgpu_sriov_vf(adev) &&
> -             !amdgpu_ras_intr_triggered()) {
>               ret = psp_ras_enable_features(&adev->psp, info, enable);
>               if (ret) {
>                       dev_err(adev->dev, "ras %s %s failed poison:%d
> ret:%d\n",
> --
> 2.17.1



More information about the amd-gfx mailing list