drm/amdgpu: do not pass ttm_resource_manager to vram_mgr
Do not allow exported amdgpu_vram_mgr_*() to accept any ttm_resource_manager pointer. Also there is no need to force other module to call a ttm function just to eventually call vram_mgr functions. v2: pass adev's vram_mgr instead of adev Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -96,10 +96,9 @@ static ssize_t amdgpu_mem_info_vram_used_show(struct device *dev,
|
||||
{
|
||||
struct drm_device *ddev = dev_get_drvdata(dev);
|
||||
struct amdgpu_device *adev = drm_to_adev(ddev);
|
||||
struct ttm_resource_manager *man;
|
||||
|
||||
man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
|
||||
return sysfs_emit(buf, "%llu\n", amdgpu_vram_mgr_usage(man));
|
||||
return sysfs_emit(buf, "%llu\n",
|
||||
amdgpu_vram_mgr_usage(&adev->mman.vram_mgr));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,10 +115,9 @@ static ssize_t amdgpu_mem_info_vis_vram_used_show(struct device *dev,
|
||||
{
|
||||
struct drm_device *ddev = dev_get_drvdata(dev);
|
||||
struct amdgpu_device *adev = drm_to_adev(ddev);
|
||||
struct ttm_resource_manager *man;
|
||||
|
||||
man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
|
||||
return sysfs_emit(buf, "%llu\n", amdgpu_vram_mgr_vis_usage(man));
|
||||
return sysfs_emit(buf, "%llu\n",
|
||||
amdgpu_vram_mgr_vis_usage(&adev->mman.vram_mgr));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -263,16 +261,15 @@ static void amdgpu_vram_mgr_do_reserve(struct ttm_resource_manager *man)
|
||||
/**
|
||||
* amdgpu_vram_mgr_reserve_range - Reserve a range from VRAM
|
||||
*
|
||||
* @man: TTM memory type manager
|
||||
* @mgr: amdgpu_vram_mgr pointer
|
||||
* @start: start address of the range in VRAM
|
||||
* @size: size of the range
|
||||
*
|
||||
* Reserve memory from start addess with the specified size in VRAM
|
||||
* Reserve memory from start address with the specified size in VRAM
|
||||
*/
|
||||
int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
|
||||
int amdgpu_vram_mgr_reserve_range(struct amdgpu_vram_mgr *mgr,
|
||||
uint64_t start, uint64_t size)
|
||||
{
|
||||
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
|
||||
struct amdgpu_vram_reservation *rsv;
|
||||
|
||||
rsv = kzalloc(sizeof(*rsv), GFP_KERNEL);
|
||||
@@ -285,7 +282,7 @@ int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
|
||||
|
||||
spin_lock(&mgr->lock);
|
||||
list_add_tail(&mgr->reservations_pending, &rsv->node);
|
||||
amdgpu_vram_mgr_do_reserve(man);
|
||||
amdgpu_vram_mgr_do_reserve(&mgr->manager);
|
||||
spin_unlock(&mgr->lock);
|
||||
|
||||
return 0;
|
||||
@@ -294,7 +291,7 @@ int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
|
||||
/**
|
||||
* amdgpu_vram_mgr_query_page_status - query the reservation status
|
||||
*
|
||||
* @man: TTM memory type manager
|
||||
* @mgr: amdgpu_vram_mgr pointer
|
||||
* @start: start address of a page in VRAM
|
||||
*
|
||||
* Returns:
|
||||
@@ -302,10 +299,9 @@ int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
|
||||
* 0: the page has been reserved
|
||||
* -ENOENT: the input page is not a reservation
|
||||
*/
|
||||
int amdgpu_vram_mgr_query_page_status(struct ttm_resource_manager *man,
|
||||
int amdgpu_vram_mgr_query_page_status(struct amdgpu_vram_mgr *mgr,
|
||||
uint64_t start)
|
||||
{
|
||||
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
|
||||
struct amdgpu_vram_reservation *rsv;
|
||||
int ret;
|
||||
|
||||
@@ -632,28 +628,24 @@ void amdgpu_vram_mgr_free_sgt(struct device *dev,
|
||||
/**
|
||||
* amdgpu_vram_mgr_usage - how many bytes are used in this domain
|
||||
*
|
||||
* @man: TTM memory type manager
|
||||
* @mgr: amdgpu_vram_mgr pointer
|
||||
*
|
||||
* Returns how many bytes are used in this domain.
|
||||
*/
|
||||
uint64_t amdgpu_vram_mgr_usage(struct ttm_resource_manager *man)
|
||||
uint64_t amdgpu_vram_mgr_usage(struct amdgpu_vram_mgr *mgr)
|
||||
{
|
||||
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
|
||||
|
||||
return atomic64_read(&mgr->usage);
|
||||
}
|
||||
|
||||
/**
|
||||
* amdgpu_vram_mgr_vis_usage - how many bytes are used in the visible part
|
||||
*
|
||||
* @man: TTM memory type manager
|
||||
* @mgr: amdgpu_vram_mgr pointer
|
||||
*
|
||||
* Returns how many bytes are used in the visible part of VRAM
|
||||
*/
|
||||
uint64_t amdgpu_vram_mgr_vis_usage(struct ttm_resource_manager *man)
|
||||
uint64_t amdgpu_vram_mgr_vis_usage(struct amdgpu_vram_mgr *mgr)
|
||||
{
|
||||
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
|
||||
|
||||
return atomic64_read(&mgr->vis_usage);
|
||||
}
|
||||
|
||||
@@ -675,8 +667,8 @@ static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
|
||||
spin_unlock(&mgr->lock);
|
||||
|
||||
drm_printf(printer, "man size:%llu pages, ram usage:%lluMB, vis usage:%lluMB\n",
|
||||
man->size, amdgpu_vram_mgr_usage(man) >> 20,
|
||||
amdgpu_vram_mgr_vis_usage(man) >> 20);
|
||||
man->size, amdgpu_vram_mgr_usage(mgr) >> 20,
|
||||
amdgpu_vram_mgr_vis_usage(mgr) >> 20);
|
||||
}
|
||||
|
||||
static const struct ttm_resource_manager_func amdgpu_vram_mgr_func = {
|
||||
|
||||
Reference in New Issue
Block a user