On Wed, Sep 11, 2024 at 11:58 AM David Belanger <david.belanger@xxxxxxx> wrote: > > Move enable_doorbell_selfring_aperture from common_hw_init > to common_late_init in soc24, otherwise selfring aperture is > initialized with an incorrect doorbell aperture base. > > Port changes from this commit from soc21 to soc24: > commit 1c312e816c40 ("drm/amdgpu: Enable doorbell selfring after resize FB > BAR") > > Signed-off-by: David Belanger <david.belanger@xxxxxxx> Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/soc24.c | 23 +++++++++++++---------- > 1 file changed, 13 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/soc24.c b/drivers/gpu/drm/amd/amdgpu/soc24.c > index b0c3678cfb31..fd4c3d4f8387 100644 > --- a/drivers/gpu/drm/amd/amdgpu/soc24.c > +++ b/drivers/gpu/drm/amd/amdgpu/soc24.c > @@ -250,13 +250,6 @@ static void soc24_program_aspm(struct amdgpu_device *adev) > adev->nbio.funcs->program_aspm(adev); > } > > -static void soc24_enable_doorbell_aperture(struct amdgpu_device *adev, > - bool enable) > -{ > - adev->nbio.funcs->enable_doorbell_aperture(adev, enable); > - adev->nbio.funcs->enable_doorbell_selfring_aperture(adev, enable); > -} > - > const struct amdgpu_ip_block_version soc24_common_ip_block = { > .type = AMD_IP_BLOCK_TYPE_COMMON, > .major = 1, > @@ -454,6 +447,11 @@ static int soc24_common_late_init(void *handle) > if (amdgpu_sriov_vf(adev)) > xgpu_nv_mailbox_get_irq(adev); > > + /* Enable selfring doorbell aperture late because doorbell BAR > + * aperture will change if resize BAR successfully in gmc sw_init. > + */ > + adev->nbio.funcs->enable_doorbell_selfring_aperture(adev, true); > + > return 0; > } > > @@ -491,7 +489,7 @@ static int soc24_common_hw_init(void *handle) > adev->df.funcs->hw_init(adev); > > /* enable the doorbell aperture */ > - soc24_enable_doorbell_aperture(adev, true); > + adev->nbio.funcs->enable_doorbell_aperture(adev, true); > > return 0; > } > @@ -500,8 +498,13 @@ static int soc24_common_hw_fini(void *handle) > { > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - /* disable the doorbell aperture */ > - soc24_enable_doorbell_aperture(adev, false); > + /* Disable the doorbell aperture and selfring doorbell aperture > + * separately in hw_fini because soc21_enable_doorbell_aperture > + * has been removed and there is no need to delay disabling > + * selfring doorbell. > + */ > + adev->nbio.funcs->enable_doorbell_aperture(adev, false); > + adev->nbio.funcs->enable_doorbell_selfring_aperture(adev, false); > > if (amdgpu_sriov_vf(adev)) > xgpu_nv_mailbox_put_irq(adev); > -- > 2.41.0 >