@@ -47,12 +47,6 @@ static struct {
4747 spinlock_t mem_limit_lock ;
4848} kfd_mem_limit ;
4949
50- /* Struct used for amdgpu_amdkfd_bo_validate */
51- struct amdgpu_vm_parser {
52- uint32_t domain ;
53- bool wait ;
54- };
55-
5650static const char * const domain_bit_to_string [] = {
5751 "CPU" ,
5852 "GTT" ,
@@ -348,11 +342,9 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain,
348342 return ret ;
349343}
350344
351- static int amdgpu_amdkfd_validate (void * param , struct amdgpu_bo * bo )
345+ static int amdgpu_amdkfd_validate_vm_bo (void * _unused , struct amdgpu_bo * bo )
352346{
353- struct amdgpu_vm_parser * p = param ;
354-
355- return amdgpu_amdkfd_bo_validate (bo , p -> domain , p -> wait );
347+ return amdgpu_amdkfd_bo_validate (bo , bo -> allowed_domains , false);
356348}
357349
358350/* vm_validate_pt_pd_bos - Validate page table and directory BOs
@@ -364,28 +356,23 @@ static int amdgpu_amdkfd_validate(void *param, struct amdgpu_bo *bo)
364356 */
365357static int vm_validate_pt_pd_bos (struct amdgpu_vm * vm )
366358{
367- struct amdgpu_bo * pd = vm -> root .base . bo ;
359+ struct amdgpu_bo * pd = vm -> root .bo ;
368360 struct amdgpu_device * adev = amdgpu_ttm_adev (pd -> tbo .bdev );
369- struct amdgpu_vm_parser param ;
370361 int ret ;
371362
372- param .domain = AMDGPU_GEM_DOMAIN_VRAM ;
373- param .wait = false;
374-
375- ret = amdgpu_vm_validate_pt_bos (adev , vm , amdgpu_amdkfd_validate ,
376- & param );
363+ ret = amdgpu_vm_validate_pt_bos (adev , vm , amdgpu_amdkfd_validate_vm_bo , NULL );
377364 if (ret ) {
378365 pr_err ("failed to validate PT BOs\n" );
379366 return ret ;
380367 }
381368
382- ret = amdgpu_amdkfd_validate ( & param , pd );
369+ ret = amdgpu_amdkfd_validate_vm_bo ( NULL , pd );
383370 if (ret ) {
384371 pr_err ("failed to validate PD\n" );
385372 return ret ;
386373 }
387374
388- vm -> pd_phys_addr = amdgpu_gmc_pd_addr (vm -> root .base . bo );
375+ vm -> pd_phys_addr = amdgpu_gmc_pd_addr (vm -> root .bo );
389376
390377 if (vm -> use_cpu_for_update ) {
391378 ret = amdgpu_bo_kmap (pd , NULL );
@@ -400,7 +387,7 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
400387
401388static int vm_update_pds (struct amdgpu_vm * vm , struct amdgpu_sync * sync )
402389{
403- struct amdgpu_bo * pd = vm -> root .base . bo ;
390+ struct amdgpu_bo * pd = vm -> root .bo ;
404391 struct amdgpu_device * adev = amdgpu_ttm_adev (pd -> tbo .bdev );
405392 int ret ;
406393
@@ -652,7 +639,7 @@ kfd_mem_attach_dmabuf(struct amdgpu_device *adev, struct kgd_mem *mem,
652639 }
653640 }
654641
655- gobj = amdgpu_gem_prime_import (& adev -> ddev , mem -> dmabuf );
642+ gobj = amdgpu_gem_prime_import (adev_to_drm ( adev ) , mem -> dmabuf );
656643 if (IS_ERR (gobj ))
657644 return PTR_ERR (gobj );
658645
@@ -1166,7 +1153,7 @@ static int process_sync_pds_resv(struct amdkfd_process_info *process_info,
11661153
11671154 list_for_each_entry (peer_vm , & process_info -> vm_list_head ,
11681155 vm_list_node ) {
1169- struct amdgpu_bo * pd = peer_vm -> root .base . bo ;
1156+ struct amdgpu_bo * pd = peer_vm -> root .bo ;
11701157
11711158 ret = amdgpu_sync_resv (NULL , sync , pd -> tbo .base .resv ,
11721159 AMDGPU_SYNC_NE_OWNER ,
@@ -1233,24 +1220,24 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,
12331220 vm -> process_info = * process_info ;
12341221
12351222 /* Validate page directory and attach eviction fence */
1236- ret = amdgpu_bo_reserve (vm -> root .base . bo , true);
1223+ ret = amdgpu_bo_reserve (vm -> root .bo , true);
12371224 if (ret )
12381225 goto reserve_pd_fail ;
12391226 ret = vm_validate_pt_pd_bos (vm );
12401227 if (ret ) {
12411228 pr_err ("validate_pt_pd_bos() failed\n" );
12421229 goto validate_pd_fail ;
12431230 }
1244- ret = amdgpu_bo_sync_wait (vm -> root .base . bo ,
1231+ ret = amdgpu_bo_sync_wait (vm -> root .bo ,
12451232 AMDGPU_FENCE_OWNER_KFD , false);
12461233 if (ret )
12471234 goto wait_pd_fail ;
1248- ret = dma_resv_reserve_shared (vm -> root .base . bo -> tbo .base .resv , 1 );
1235+ ret = dma_resv_reserve_shared (vm -> root .bo -> tbo .base .resv , 1 );
12491236 if (ret )
12501237 goto reserve_shared_fail ;
1251- amdgpu_bo_fence (vm -> root .base . bo ,
1238+ amdgpu_bo_fence (vm -> root .bo ,
12521239 & vm -> process_info -> eviction_fence -> base , true);
1253- amdgpu_bo_unreserve (vm -> root .base . bo );
1240+ amdgpu_bo_unreserve (vm -> root .bo );
12541241
12551242 /* Update process info */
12561243 mutex_lock (& vm -> process_info -> lock );
@@ -1264,7 +1251,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,
12641251reserve_shared_fail :
12651252wait_pd_fail :
12661253validate_pd_fail :
1267- amdgpu_bo_unreserve (vm -> root .base . bo );
1254+ amdgpu_bo_unreserve (vm -> root .bo );
12681255reserve_pd_fail :
12691256 vm -> process_info = NULL ;
12701257 if (info ) {
@@ -1319,7 +1306,7 @@ void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev,
13191306 struct amdgpu_vm * vm )
13201307{
13211308 struct amdkfd_process_info * process_info = vm -> process_info ;
1322- struct amdgpu_bo * pd = vm -> root .base . bo ;
1309+ struct amdgpu_bo * pd = vm -> root .bo ;
13231310
13241311 if (!process_info )
13251312 return ;
@@ -1375,7 +1362,7 @@ void amdgpu_amdkfd_gpuvm_release_process_vm(struct kgd_dev *kgd, void *drm_priv)
13751362uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir (void * drm_priv )
13761363{
13771364 struct amdgpu_vm * avm = drm_priv_to_vm (drm_priv );
1378- struct amdgpu_bo * pd = avm -> root .base . bo ;
1365+ struct amdgpu_bo * pd = avm -> root .bo ;
13791366 struct amdgpu_device * adev = amdgpu_ttm_adev (pd -> tbo .bdev );
13801367
13811368 if (adev -> asic_type < CHIP_VEGA10 )
@@ -2402,7 +2389,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)
24022389 /* Attach eviction fence to PD / PT BOs */
24032390 list_for_each_entry (peer_vm , & process_info -> vm_list_head ,
24042391 vm_list_node ) {
2405- struct amdgpu_bo * bo = peer_vm -> root .base . bo ;
2392+ struct amdgpu_bo * bo = peer_vm -> root .bo ;
24062393
24072394 amdgpu_bo_fence (bo , & process_info -> eviction_fence -> base , true);
24082395 }
0 commit comments