Skip to content

Commit ec6aae9

Browse files
Nirmoy Dasalexdeucher
authored andcommitted
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 <[email protected]> Signed-off-by: Nirmoy Das <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent ffb378f commit ec6aae9

File tree

6 files changed

+30
-44
lines changed

6 files changed

+30
-44
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,6 @@ static void amdgpu_cs_get_threshold_for_moves(struct amdgpu_device *adev,
298298
{
299299
s64 time_us, increment_us;
300300
u64 free_vram, total_vram, used_vram;
301-
struct ttm_resource_manager *vram_man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
302301
/* Allow a maximum of 200 accumulated ms. This is basically per-IB
303302
* throttling.
304303
*
@@ -315,7 +314,7 @@ static void amdgpu_cs_get_threshold_for_moves(struct amdgpu_device *adev,
315314
}
316315

317316
total_vram = adev->gmc.real_vram_size - atomic64_read(&adev->vram_pin_size);
318-
used_vram = amdgpu_vram_mgr_usage(vram_man);
317+
used_vram = amdgpu_vram_mgr_usage(&adev->mman.vram_mgr);
319318
free_vram = used_vram >= total_vram ? 0 : total_vram - used_vram;
320319

321320
spin_lock(&adev->mm_stats.lock);
@@ -362,7 +361,7 @@ static void amdgpu_cs_get_threshold_for_moves(struct amdgpu_device *adev,
362361
if (!amdgpu_gmc_vram_full_visible(&adev->gmc)) {
363362
u64 total_vis_vram = adev->gmc.visible_vram_size;
364363
u64 used_vis_vram =
365-
amdgpu_vram_mgr_vis_usage(vram_man);
364+
amdgpu_vram_mgr_vis_usage(&adev->mman.vram_mgr);
366365

367366
if (used_vis_vram < total_vis_vram) {
368367
u64 free_vis_vram = total_vis_vram - used_vis_vram;

drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -672,10 +672,10 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
672672
ui64 = atomic64_read(&adev->num_vram_cpu_page_faults);
673673
return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
674674
case AMDGPU_INFO_VRAM_USAGE:
675-
ui64 = amdgpu_vram_mgr_usage(ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM));
675+
ui64 = amdgpu_vram_mgr_usage(&adev->mman.vram_mgr);
676676
return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
677677
case AMDGPU_INFO_VIS_VRAM_USAGE:
678-
ui64 = amdgpu_vram_mgr_vis_usage(ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM));
678+
ui64 = amdgpu_vram_mgr_vis_usage(&adev->mman.vram_mgr);
679679
return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
680680
case AMDGPU_INFO_GTT_USAGE:
681681
ui64 = amdgpu_gtt_mgr_usage(&adev->mman.gtt_mgr);
@@ -709,8 +709,6 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
709709
}
710710
case AMDGPU_INFO_MEMORY: {
711711
struct drm_amdgpu_memory_info mem;
712-
struct ttm_resource_manager *vram_man =
713-
ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
714712
struct ttm_resource_manager *gtt_man =
715713
ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
716714
memset(&mem, 0, sizeof(mem));
@@ -719,7 +717,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
719717
atomic64_read(&adev->vram_pin_size) -
720718
AMDGPU_VM_RESERVED_VRAM;
721719
mem.vram.heap_usage =
722-
amdgpu_vram_mgr_usage(vram_man);
720+
amdgpu_vram_mgr_usage(&adev->mman.vram_mgr);
723721
mem.vram.max_allocation = mem.vram.usable_heap_size * 3 / 4;
724722

725723
mem.cpu_accessible_vram.total_heap_size =
@@ -729,7 +727,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
729727
atomic64_read(&adev->visible_pin_size),
730728
mem.vram.usable_heap_size);
731729
mem.cpu_accessible_vram.heap_usage =
732-
amdgpu_vram_mgr_vis_usage(vram_man);
730+
amdgpu_vram_mgr_vis_usage(&adev->mman.vram_mgr);
733731
mem.cpu_accessible_vram.max_allocation =
734732
mem.cpu_accessible_vram.usable_heap_size * 3 / 4;
735733

drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1839,8 +1839,7 @@ static int amdgpu_ras_badpages_read(struct amdgpu_device *adev,
18391839
.size = AMDGPU_GPU_PAGE_SIZE,
18401840
.flags = AMDGPU_RAS_RETIRE_PAGE_RESERVED,
18411841
};
1842-
status = amdgpu_vram_mgr_query_page_status(
1843-
ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM),
1842+
status = amdgpu_vram_mgr_query_page_status(&adev->mman.vram_mgr,
18441843
data->bps[i].retired_page);
18451844
if (status == -EBUSY)
18461845
(*bps)[i].flags = AMDGPU_RAS_RETIRE_PAGE_PENDING;
@@ -1941,8 +1940,7 @@ int amdgpu_ras_add_bad_pages(struct amdgpu_device *adev,
19411940
goto out;
19421941
}
19431942

1944-
amdgpu_vram_mgr_reserve_range(
1945-
ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM),
1943+
amdgpu_vram_mgr_reserve_range(&adev->mman.vram_mgr,
19461944
bps[i].retired_page << AMDGPU_GPU_PAGE_SHIFT,
19471945
AMDGPU_GPU_PAGE_SIZE);
19481946

drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ int amdgpu_vram_mgr_alloc_sgt(struct amdgpu_device *adev,
129129
void amdgpu_vram_mgr_free_sgt(struct device *dev,
130130
enum dma_data_direction dir,
131131
struct sg_table *sgt);
132-
uint64_t amdgpu_vram_mgr_usage(struct ttm_resource_manager *man);
133-
uint64_t amdgpu_vram_mgr_vis_usage(struct ttm_resource_manager *man);
134-
int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
132+
uint64_t amdgpu_vram_mgr_usage(struct amdgpu_vram_mgr *mgr);
133+
uint64_t amdgpu_vram_mgr_vis_usage(struct amdgpu_vram_mgr *mgr);
134+
int amdgpu_vram_mgr_reserve_range(struct amdgpu_vram_mgr *mgr,
135135
uint64_t start, uint64_t size);
136-
int amdgpu_vram_mgr_query_page_status(struct ttm_resource_manager *man,
136+
int amdgpu_vram_mgr_query_page_status(struct amdgpu_vram_mgr *mgr,
137137
uint64_t start);
138138

139139
int amdgpu_ttm_init(struct amdgpu_device *adev);

drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,6 @@ static void amdgpu_virt_populate_vf2pf_ucode_info(struct amdgpu_device *adev)
553553
static int amdgpu_virt_write_vf2pf_data(struct amdgpu_device *adev)
554554
{
555555
struct amd_sriov_msg_vf2pf_info *vf2pf_info;
556-
struct ttm_resource_manager *vram_man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
557556

558557
vf2pf_info = (struct amd_sriov_msg_vf2pf_info *) adev->virt.fw_reserve.p_vf2pf;
559558

@@ -576,8 +575,8 @@ static int amdgpu_virt_write_vf2pf_data(struct amdgpu_device *adev)
576575
vf2pf_info->driver_cert = 0;
577576
vf2pf_info->os_info.all = 0;
578577

579-
vf2pf_info->fb_usage = amdgpu_vram_mgr_usage(vram_man) >> 20;
580-
vf2pf_info->fb_vis_usage = amdgpu_vram_mgr_vis_usage(vram_man) >> 20;
578+
vf2pf_info->fb_usage = amdgpu_vram_mgr_usage(&adev->mman.vram_mgr) >> 20;
579+
vf2pf_info->fb_vis_usage = amdgpu_vram_mgr_vis_usage(&adev->mman.vram_mgr) >> 20;
581580
vf2pf_info->fb_size = adev->gmc.real_vram_size >> 20;
582581
vf2pf_info->fb_vis_size = adev->gmc.visible_vram_size >> 20;
583582

drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,9 @@ static ssize_t amdgpu_mem_info_vram_used_show(struct device *dev,
9696
{
9797
struct drm_device *ddev = dev_get_drvdata(dev);
9898
struct amdgpu_device *adev = drm_to_adev(ddev);
99-
struct ttm_resource_manager *man;
10099

101-
man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
102-
return sysfs_emit(buf, "%llu\n", amdgpu_vram_mgr_usage(man));
100+
return sysfs_emit(buf, "%llu\n",
101+
amdgpu_vram_mgr_usage(&adev->mman.vram_mgr));
103102
}
104103

105104
/**
@@ -116,10 +115,9 @@ static ssize_t amdgpu_mem_info_vis_vram_used_show(struct device *dev,
116115
{
117116
struct drm_device *ddev = dev_get_drvdata(dev);
118117
struct amdgpu_device *adev = drm_to_adev(ddev);
119-
struct ttm_resource_manager *man;
120118

121-
man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
122-
return sysfs_emit(buf, "%llu\n", amdgpu_vram_mgr_vis_usage(man));
119+
return sysfs_emit(buf, "%llu\n",
120+
amdgpu_vram_mgr_vis_usage(&adev->mman.vram_mgr));
123121
}
124122

125123
/**
@@ -263,16 +261,15 @@ static void amdgpu_vram_mgr_do_reserve(struct ttm_resource_manager *man)
263261
/**
264262
* amdgpu_vram_mgr_reserve_range - Reserve a range from VRAM
265263
*
266-
* @man: TTM memory type manager
264+
* @mgr: amdgpu_vram_mgr pointer
267265
* @start: start address of the range in VRAM
268266
* @size: size of the range
269267
*
270-
* Reserve memory from start addess with the specified size in VRAM
268+
* Reserve memory from start address with the specified size in VRAM
271269
*/
272-
int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
270+
int amdgpu_vram_mgr_reserve_range(struct amdgpu_vram_mgr *mgr,
273271
uint64_t start, uint64_t size)
274272
{
275-
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
276273
struct amdgpu_vram_reservation *rsv;
277274

278275
rsv = kzalloc(sizeof(*rsv), GFP_KERNEL);
@@ -285,7 +282,7 @@ int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
285282

286283
spin_lock(&mgr->lock);
287284
list_add_tail(&mgr->reservations_pending, &rsv->node);
288-
amdgpu_vram_mgr_do_reserve(man);
285+
amdgpu_vram_mgr_do_reserve(&mgr->manager);
289286
spin_unlock(&mgr->lock);
290287

291288
return 0;
@@ -294,18 +291,17 @@ int amdgpu_vram_mgr_reserve_range(struct ttm_resource_manager *man,
294291
/**
295292
* amdgpu_vram_mgr_query_page_status - query the reservation status
296293
*
297-
* @man: TTM memory type manager
294+
* @mgr: amdgpu_vram_mgr pointer
298295
* @start: start address of a page in VRAM
299296
*
300297
* Returns:
301298
* -EBUSY: the page is still hold and in pending list
302299
* 0: the page has been reserved
303300
* -ENOENT: the input page is not a reservation
304301
*/
305-
int amdgpu_vram_mgr_query_page_status(struct ttm_resource_manager *man,
302+
int amdgpu_vram_mgr_query_page_status(struct amdgpu_vram_mgr *mgr,
306303
uint64_t start)
307304
{
308-
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
309305
struct amdgpu_vram_reservation *rsv;
310306
int ret;
311307

@@ -632,28 +628,24 @@ void amdgpu_vram_mgr_free_sgt(struct device *dev,
632628
/**
633629
* amdgpu_vram_mgr_usage - how many bytes are used in this domain
634630
*
635-
* @man: TTM memory type manager
631+
* @mgr: amdgpu_vram_mgr pointer
636632
*
637633
* Returns how many bytes are used in this domain.
638634
*/
639-
uint64_t amdgpu_vram_mgr_usage(struct ttm_resource_manager *man)
635+
uint64_t amdgpu_vram_mgr_usage(struct amdgpu_vram_mgr *mgr)
640636
{
641-
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
642-
643637
return atomic64_read(&mgr->usage);
644638
}
645639

646640
/**
647641
* amdgpu_vram_mgr_vis_usage - how many bytes are used in the visible part
648642
*
649-
* @man: TTM memory type manager
643+
* @mgr: amdgpu_vram_mgr pointer
650644
*
651645
* Returns how many bytes are used in the visible part of VRAM
652646
*/
653-
uint64_t amdgpu_vram_mgr_vis_usage(struct ttm_resource_manager *man)
647+
uint64_t amdgpu_vram_mgr_vis_usage(struct amdgpu_vram_mgr *mgr)
654648
{
655-
struct amdgpu_vram_mgr *mgr = to_vram_mgr(man);
656-
657649
return atomic64_read(&mgr->vis_usage);
658650
}
659651

@@ -675,8 +667,8 @@ static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
675667
spin_unlock(&mgr->lock);
676668

677669
drm_printf(printer, "man size:%llu pages, ram usage:%lluMB, vis usage:%lluMB\n",
678-
man->size, amdgpu_vram_mgr_usage(man) >> 20,
679-
amdgpu_vram_mgr_vis_usage(man) >> 20);
670+
man->size, amdgpu_vram_mgr_usage(mgr) >> 20,
671+
amdgpu_vram_mgr_vis_usage(mgr) >> 20);
680672
}
681673

682674
static const struct ttm_resource_manager_func amdgpu_vram_mgr_func = {

0 commit comments

Comments
 (0)