[PATCH 1/2] drm/amdgpu: unify the way to judge RAS feature readiness
Quan, Evan
Evan.Quan at amd.com
Mon Mar 11 05:27:55 UTC 2019
> -----Original Message-----
> From: Pan, Xinhui
> Sent: 2019年3月11日 13:08
> To: Quan, Evan <Evan.Quan at amd.com>; amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Quan, Evan
> <Evan.Quan at amd.com>
> Subject: RE: [PATCH 1/2] drm/amdgpu: unify the way to judge RAS feature
> readiness
>
>
> Inline.
>
> -----Original Message-----
> From: Evan Quan <evan.quan at amd.com>
> Sent: 2019年3月11日 12:31
> To: amd-gfx at lists.freedesktop.org
> Cc: Pan, Xinhui <Xinhui.Pan at amd.com>; Deucher, Alexander
> <Alexander.Deucher at amd.com>; Quan, Evan <Evan.Quan at amd.com>
> Subject: [PATCH 1/2] drm/amdgpu: unify the way to judge RAS feature
> readiness
>
> Unify the way to judge whether a specific RAS feature is supported.
>
> Change-Id: I14bb19db49f06e134de903376b14eb27e0e038c7
> Signed-off-by: Evan Quan <evan.quan at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 10 ++--------
> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 2 +-
> 2 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> index bf462c59cb76..7f9cbd64cb20 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
> @@ -466,12 +466,6 @@ static struct ras_manager
> *amdgpu_ras_find_obj(struct amdgpu_device *adev,
> /* obj end */
>
> /* feature ctl begin */
> -static int amdgpu_ras_is_feature_allowed(struct amdgpu_device *adev,
> - struct ras_common_if *head)
> -{
> - return amdgpu_ras_enable && (amdgpu_ras_mask & BIT(head-
> >block));
> -}
> -
> static int amdgpu_ras_is_feature_enabled(struct amdgpu_device *adev,
> struct ras_common_if *head)
> {
> @@ -490,7 +484,7 @@ static int __amdgpu_ras_feature_enable(struct
> amdgpu_device *adev,
> struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
> struct ras_manager *obj = amdgpu_ras_find_obj(adev, head);
>
> - if (!amdgpu_ras_is_feature_allowed(adev, head))
> + if (!amdgpu_ras_is_supported(adev, head->block))
> return 0;
>
> [XH] I am thinking of splitting supported to hw_supported and sw_supported.
> The code become a little clearer now.
> For hw_supported case, we need allow IP disable ras.
> For sw_suppporeted case, we need allow IP disable/enable/inject/query,
> etc .
>
[Quan, Evan] "sw_supported" here means amdgpu_ras_enable/mask module parameters. Right?
[Quan, Evan] And do you mean even with "sw_supported" disabled(ras_enable/mask = 0), there will be still RAS disable functionality as long as
hardware supports it? Not quite sure, that sounds a little confusing.
Anyway, I think you can add one more flag to existing amdgpu_ras_is_supported() to support this. Maintaining two APIs which do almost the
same thing is error-prone.
>
> if (!(!!enable ^ !!amdgpu_ras_is_feature_enabled(adev, head)))
> return 0;
> @@ -539,7 +533,7 @@ int amdgpu_ras_feature_enable(struct
> amdgpu_device *adev,
> }
>
> /* Do not enable if it is not allowed. */
> - WARN_ON(enable && !amdgpu_ras_is_feature_allowed(adev,
> head));
> + WARN_ON(enable && !amdgpu_ras_is_supported(adev, head-
> >block));
> /* Are we alerady in that state we are going to set? */
> if (!(!!enable ^ !!amdgpu_ras_is_feature_enabled(adev, head)))
> return 0;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> index 02cb9a13ddc5..0ef2b91b8fcd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
> @@ -163,7 +163,7 @@ struct ras_debug_if {
>
> /* check if ras is supported on block, say, sdma, gfx */ static inline int
> amdgpu_ras_is_supported(struct amdgpu_device *adev,
> - unsigned int block)
> + enum amdgpu_ras_block block)
> {
> struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
>
> --
> 2.21.0
More information about the amd-gfx
mailing list