[PATCH 3/3] drm/amdgpu: revert "Implement new dummy vram manager"

Felix Kuehling felix.kuehling at amd.com
Wed Jun 25 16:32:24 UTC 2025


On 2025-06-06 08:57, Christian König wrote:
> This is should be unecessary since a VRAM manager isn't mandatory in
> the first place.
>
> It could be that we have some missing checks inside AMDGPU or TTM but
> those should then be fixed instead of worked around like that.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>

Acked-by: Felix Kuehling <felix.kuehling at amd.com>


> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c      | 15 +++--
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 61 ++------------------
>   2 files changed, 13 insertions(+), 63 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 9c5df35f05b7..db7980105953 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1875,11 +1875,13 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>   	}
>   	adev->mman.initialized = true;
>   
> -	/* Initialize VRAM pool with all of VRAM divided into pages */
> -	r = amdgpu_vram_mgr_init(adev);
> -	if (r) {
> -		DRM_ERROR("Failed initializing VRAM heap.\n");
> -		return r;
> +	if (!adev->gmc.is_app_apu) {
> +		/* Initialize VRAM pool with all of VRAM divided into pages */
> +		r = amdgpu_vram_mgr_init(adev);
> +		if (r) {
> +			DRM_ERROR("Failed initializing VRAM heap.\n");
> +			return r;
> +		}
>   	}
>   
>   	/* Change the size here instead of the init above so only lpfn is affected */
> @@ -2078,7 +2080,8 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
>   		drm_dev_exit(idx);
>   	}
>   
> -	amdgpu_vram_mgr_fini(adev);
> +	if (!adev->gmc.is_app_apu)
> +		amdgpu_vram_mgr_fini(adev);
>   	amdgpu_gtt_mgr_fini(adev);
>   	amdgpu_preempt_mgr_fini(adev);
>   	amdgpu_doorbell_fini(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
> index abdc52b0895a..2032310446e7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
> @@ -396,45 +396,6 @@ int amdgpu_vram_mgr_query_page_status(struct amdgpu_vram_mgr *mgr,
>   	return ret;
>   }
>   
> -static void amdgpu_dummy_vram_mgr_debug(struct ttm_resource_manager *man,
> -				  struct drm_printer *printer)
> -{
> -	DRM_DEBUG_DRIVER("Dummy vram mgr debug\n");
> -}
> -
> -static bool amdgpu_dummy_vram_mgr_compatible(struct ttm_resource_manager *man,
> -				       struct ttm_resource *res,
> -				       const struct ttm_place *place,
> -				       size_t size)
> -{
> -	DRM_DEBUG_DRIVER("Dummy vram mgr compatible\n");
> -	return false;
> -}
> -
> -static bool amdgpu_dummy_vram_mgr_intersects(struct ttm_resource_manager *man,
> -				       struct ttm_resource *res,
> -				       const struct ttm_place *place,
> -				       size_t size)
> -{
> -	DRM_DEBUG_DRIVER("Dummy vram mgr intersects\n");
> -	return true;
> -}
> -
> -static void amdgpu_dummy_vram_mgr_del(struct ttm_resource_manager *man,
> -				struct ttm_resource *res)
> -{
> -	DRM_DEBUG_DRIVER("Dummy vram mgr deleted\n");
> -}
> -
> -static int amdgpu_dummy_vram_mgr_new(struct ttm_resource_manager *man,
> -			       struct ttm_buffer_object *tbo,
> -			       const struct ttm_place *place,
> -			       struct ttm_resource **res)
> -{
> -	DRM_DEBUG_DRIVER("Dummy vram mgr new\n");
> -	return -ENOSPC;
> -}
> -
>   /**
>    * amdgpu_vram_mgr_new - allocate new ranges
>    *
> @@ -879,14 +840,6 @@ static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
>   	mutex_unlock(&mgr->lock);
>   }
>   
> -static const struct ttm_resource_manager_func amdgpu_dummy_vram_mgr_func = {
> -	.alloc	= amdgpu_dummy_vram_mgr_new,
> -	.free	= amdgpu_dummy_vram_mgr_del,
> -	.intersects = amdgpu_dummy_vram_mgr_intersects,
> -	.compatible = amdgpu_dummy_vram_mgr_compatible,
> -	.debug	= amdgpu_dummy_vram_mgr_debug
> -};
> -
>   static const struct ttm_resource_manager_func amdgpu_vram_mgr_func = {
>   	.alloc	= amdgpu_vram_mgr_new,
>   	.free	= amdgpu_vram_mgr_del,
> @@ -919,16 +872,10 @@ int amdgpu_vram_mgr_init(struct amdgpu_device *adev)
>   	INIT_LIST_HEAD(&mgr->reserved_pages);
>   	mgr->default_page_size = PAGE_SIZE;
>   
> -	if (!adev->gmc.is_app_apu) {
> -		man->func = &amdgpu_vram_mgr_func;
> -
> -		err = drm_buddy_init(&mgr->mm, man->size, PAGE_SIZE);
> -		if (err)
> -			return err;
> -	} else {
> -		man->func = &amdgpu_dummy_vram_mgr_func;
> -		DRM_INFO("Setup dummy vram mgr\n");
> -	}
> +	man->func = &amdgpu_vram_mgr_func;
> +	err = drm_buddy_init(&mgr->mm, man->size, PAGE_SIZE);
> +	if (err)
> +		return err;
>   
>   	ttm_set_driver_manager(&adev->mman.bdev, TTM_PL_VRAM, &mgr->manager);
>   	ttm_resource_manager_set_used(man, true);


More information about the amd-gfx mailing list