[AMD Official Use Only - General] The series is: Reviewed-by: Tao Zhou <tao.zhou1@xxxxxxx> > -----Original Message----- > From: Zhang, Hawking <Hawking.Zhang@xxxxxxx> > Sent: Monday, July 3, 2023 4:56 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Zhou1, Tao <Tao.Zhou1@xxxxxxx>; Yang, > Stanley <Stanley.Yang@xxxxxxx>; Chai, Thomas <YiPeng.Chai@xxxxxxx>; Li, > Candice <Candice.Li@xxxxxxx> > Cc: Zhang, Hawking <Hawking.Zhang@xxxxxxx> > 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@xxxxxxx> > --- > 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