[PATCH 1/2] drm/amdgpu: handle asics with 1 SDMA instance
Huang Rui
ray.huang at amd.com
Thu May 5 06:23:55 UTC 2022
On Thu, May 05, 2022 at 10:52:31AM +0800, Alex Deucher wrote:
> On Wed, May 4, 2022 at 2:28 AM Christian König <christian.koenig at amd.com> wrote:
> >
> > Am 03.05.22 um 22:38 schrieb Alex Deucher:
> > > From: Xiaojian Du <Xiaojian.Du at amd.com>
> > >
> > > This patch will handle asics with 1 SDMA instance.
> > >
> > > Signed-off-by: Xiaojian Du <Xiaojian.Du at amd.com>
> > > Reviewed-by: Huang Rui <ray.huang at amd.com>
> > > Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> > > ---
> > > drivers/gpu/drm/amd/amdgpu/soc21.c | 5 +++--
> > > 1 file changed, 3 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/soc21.c b/drivers/gpu/drm/amd/amdgpu/soc21.c
> > > index 307a1da13557..29acc5573f56 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/soc21.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
> > > @@ -252,8 +252,9 @@ static int soc21_read_register(struct amdgpu_device *adev, u32 se_num,
> > > *value = 0;
> > > for (i = 0; i < ARRAY_SIZE(soc21_allowed_read_registers); i++) {
> > > en = &soc21_allowed_read_registers[i];
> > > - if (reg_offset !=
> > > - (adev->reg_offset[en->hwip][en->inst][en->seg] + en->reg_offset))
> > > + if ((i == 7 && (adev->sdma.num_instances == 1)) || /* some asics don't have SDMA1 */
> > > + reg_offset !=
> > > + (adev->reg_offset[en->hwip][en->inst][en->seg] + en->reg_offset))
> >
> > Hui what? Why do we filter out register reads in the low level function?
>
> It was copied from nv.c. The proper solution is to handle it like we
> do in soc15.c:
> if (adev->reg_offset[en->hwip][en->inst] &&
> reg_offset != (adev->reg_offset[en->hwip][en->inst][en->seg]
> + en->reg_offset))
> continue;
>
The SDMA1_BASE are not contained in GC V11.0.1 APUs, so cannot refer this
pointer. Above check is better than before, thanks!
Thanks,
Ray
More information about the amd-gfx
mailing list