[PATCH 1/2] drm/amdgpu: Move HDP remapping earlier during init
Felix Kuehling
felix.kuehling at amd.com
Thu Aug 25 15:14:47 UTC 2022
Am 2022-08-25 um 04:58 schrieb Lijo Lazar:
> HDP flush is used early in the init sequence as part of memory controller
> block initialization. Hence remapping of HDP registers needed for flush
> needs to happen earlier.
>
> This also fixes the AER error reported as Unsupported Request during
> driver load.
>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=216373
>
> Reported-by: Tom Seewald <tseewald at gmail.com>
> Signed-off-by: Lijo Lazar <lijo.lazar at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 9 +++++++++
> drivers/gpu/drm/amd/amdgpu/nv.c | 6 ------
> drivers/gpu/drm/amd/amdgpu/soc15.c | 6 ------
> drivers/gpu/drm/amd/amdgpu/soc21.c | 6 ------
> 4 files changed, 9 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index ce7d117efdb5..53d753e94a71 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2376,6 +2376,15 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)
> DRM_ERROR("amdgpu_vram_scratch_init failed %d\n", r);
> goto init_failed;
> }
> +
> + /* remap HDP registers to a hole in mmio space,
> + * for the purpose of expose those registers
> + * to process space. This is needed for any early HDP
> + * flush operation during gmc initialization.
> + */
> + if (adev->nbio.funcs->remap_hdp_registers && !amdgpu_sriov_vf(adev))
Does this work on GFXv8? You may need a NULL-check for adev->nbio.funcs.
Regards,
Felix
> + adev->nbio.funcs->remap_hdp_registers(adev);
> +
> r = adev->ip_blocks[i].version->funcs->hw_init((void *)adev);
> if (r) {
> DRM_ERROR("hw_init %d failed %d\n", i, r);
> diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c b/drivers/gpu/drm/amd/amdgpu/nv.c
> index b3fba8dea63c..3ac7fef74277 100644
> --- a/drivers/gpu/drm/amd/amdgpu/nv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/nv.c
> @@ -1032,12 +1032,6 @@ static int nv_common_hw_init(void *handle)
> nv_program_aspm(adev);
> /* setup nbio registers */
> adev->nbio.funcs->init_registers(adev);
> - /* remap HDP registers to a hole in mmio space,
> - * for the purpose of expose those registers
> - * to process space
> - */
> - if (adev->nbio.funcs->remap_hdp_registers && !amdgpu_sriov_vf(adev))
> - adev->nbio.funcs->remap_hdp_registers(adev);
> /* enable the doorbell aperture */
> nv_enable_doorbell_aperture(adev, true);
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
> index fde6154f2009..a0481e37d7cf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/soc15.c
> +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
> @@ -1240,12 +1240,6 @@ static int soc15_common_hw_init(void *handle)
> soc15_program_aspm(adev);
> /* setup nbio registers */
> adev->nbio.funcs->init_registers(adev);
> - /* remap HDP registers to a hole in mmio space,
> - * for the purpose of expose those registers
> - * to process space
> - */
> - if (adev->nbio.funcs->remap_hdp_registers && !amdgpu_sriov_vf(adev))
> - adev->nbio.funcs->remap_hdp_registers(adev);
>
> /* enable the doorbell aperture */
> soc15_enable_doorbell_aperture(adev, true);
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc21.c b/drivers/gpu/drm/amd/amdgpu/soc21.c
> index 55284b24f113..16b447055102 100644
> --- a/drivers/gpu/drm/amd/amdgpu/soc21.c
> +++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
> @@ -660,12 +660,6 @@ static int soc21_common_hw_init(void *handle)
> soc21_program_aspm(adev);
> /* setup nbio registers */
> adev->nbio.funcs->init_registers(adev);
> - /* remap HDP registers to a hole in mmio space,
> - * for the purpose of expose those registers
> - * to process space
> - */
> - if (adev->nbio.funcs->remap_hdp_registers)
> - adev->nbio.funcs->remap_hdp_registers(adev);
> /* enable the doorbell aperture */
> soc21_enable_doorbell_aperture(adev, true);
>
More information about the amd-gfx
mailing list