[PATCH] drm/amdgpu: fix AGP init order

Christian König ckoenig.leichtzumerken at gmail.com
Wed Nov 8 07:31:26 UTC 2023


Am 07.11.23 um 20:14 schrieb Alex Deucher:
> The default AGP settings were overwriting the IP selected
> ones since the default was getting set after the IP ones
> were selected.
>
> Fixes: de59b69932e6 ("drm/amdgpu/gmc: set a default disable value for AGP")
> Link: https://lists.freedesktop.org/archives/amd-gfx/2023-November/100966.html
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> Cc: Mikhail Gavrilov <mikhail.v.gavrilov at gmail.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 3 ---
>   drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c     | 1 +
>   drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c     | 1 +
>   drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c      | 1 +
>   drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c      | 1 +
>   drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c      | 1 +
>   drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c      | 2 ++
>   7 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index 0dcb6c36b02c..cef920a93924 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -1062,9 +1062,6 @@ static const char * const amdgpu_vram_names[] = {
>    */
>   int amdgpu_bo_init(struct amdgpu_device *adev)
>   {
> -	/* set the default AGP aperture state */
> -	amdgpu_gmc_set_agp_default(adev, &adev->gmc);
> -
>   	/* On A+A platform, VRAM can be mapped as WB */
>   	if (!adev->gmc.xgmi.connected_to_cpu && !adev->gmc.is_app_apu) {
>   		/* reserve PAT memory space to WC for VRAM */
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> index d8a4fddab9c1..ef80ea0929fe 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
> @@ -672,6 +672,7 @@ static void gmc_v10_0_vram_gtt_location(struct amdgpu_device *adev,
>   	/* add the xgmi offset of the physical node */
>   	base += adev->gmc.xgmi.physical_node_id * adev->gmc.xgmi.node_segment_size;
>   
> +	amdgpu_gmc_set_agp_default(adev, mc);
>   	amdgpu_gmc_vram_location(adev, &adev->gmc, base);
>   	amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_BEST_FIT);
>   	if (!amdgpu_sriov_vf(adev))
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> index 4713a62ad586..5f794a907945 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> @@ -637,6 +637,7 @@ static void gmc_v11_0_vram_gtt_location(struct amdgpu_device *adev,
>   
>   	base = adev->mmhub.funcs->get_fb_location(adev);
>   
> +	amdgpu_gmc_set_agp_default(adev, mc);
>   	amdgpu_gmc_vram_location(adev, &adev->gmc, base);
>   	amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_HIGH);
>   	if (!amdgpu_sriov_vf(adev) ||
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> index 7f66954fd302..42e103d7077d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
> @@ -211,6 +211,7 @@ static void gmc_v6_0_vram_gtt_location(struct amdgpu_device *adev,
>   
>   	base <<= 24;
>   
> +	amdgpu_gmc_set_agp_default(adev, mc);
>   	amdgpu_gmc_vram_location(adev, mc, base);
>   	amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_BEST_FIT);
>   }
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> index 61ca1a82b651..efc16e580f1e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
> @@ -239,6 +239,7 @@ static void gmc_v7_0_vram_gtt_location(struct amdgpu_device *adev,
>   
>   	base <<= 24;
>   
> +	amdgpu_gmc_set_agp_default(adev, mc);
>   	amdgpu_gmc_vram_location(adev, mc, base);
>   	amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_BEST_FIT);
>   }
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> index fa59749c2aef..ff4ae73d27ec 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
> @@ -413,6 +413,7 @@ static void gmc_v8_0_vram_gtt_location(struct amdgpu_device *adev,
>   		base = RREG32(mmMC_VM_FB_LOCATION) & 0xFFFF;
>   	base <<= 24;
>   
> +	amdgpu_gmc_set_agp_default(adev, mc);
>   	amdgpu_gmc_vram_location(adev, mc, base);
>   	amdgpu_gmc_gart_location(adev, mc, AMDGPU_GART_PLACEMENT_BEST_FIT);
>   }
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> index b66c5f7e1c56..fe52d132b629 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
> @@ -1614,6 +1614,8 @@ static void gmc_v9_0_vram_gtt_location(struct amdgpu_device *adev,
>   {
>   	u64 base = adev->mmhub.funcs->get_fb_location(adev);
>   
> +	amdgpu_gmc_set_agp_default(adev, mc);
> +
>   	/* add the xgmi offset of the physical node */
>   	base += adev->gmc.xgmi.physical_node_id * adev->gmc.xgmi.node_segment_size;
>   	if (adev->gmc.xgmi.connected_to_cpu) {



More information about the amd-gfx mailing list