[PATCH] drm/amdgpu: Fix selfring initialization sequence on soc24
Alex Deucher
alexdeucher at gmail.com
Wed Sep 11 16:02:23 UTC 2024
On Wed, Sep 11, 2024 at 11:58 AM David Belanger <david.belanger at amd.com> 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 at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> 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
>
More information about the amd-gfx
mailing list