Re: [PATCH 1/1] drm/amdgpu: remove amdgpu_vm_pt

2021-06-14 Thread Christian König

Am 10.06.21 um 19:24 schrieb Nirmoy Das:

Page table entries are now in embedded in VM BO, so
we do not need struct amdgpu_vm_pt. This patch replaces
struct amdgpu_vm_pt with struct amdgpu_vm_bo_base.


Even struct amdgpu_vm_bo_base should be removed at some point, but for 
now that's ok.




Signed-off-by: Nirmoy Das 
---
  .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c  |  26 +--
  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c|   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c   |   4 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c   |   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c|   4 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c   |  12 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c   |   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_object.h|   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c| 164 --
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h|   9 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c   |   2 +-
  drivers/gpu/drm/amd/amdkfd/kfd_svm.c  |   2 +-
  12 files changed, 105 insertions(+), 126 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index fb6bcc386de1..f96598279593 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -356,7 +356,7 @@ static int amdgpu_amdkfd_validate_vm_bo(void *_unused, 
struct amdgpu_bo *bo)
   */
  static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
  {
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
int ret;
  
@@ -372,7 +372,7 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)

return ret;
}
  
-	vm->pd_phys_addr = amdgpu_gmc_pd_addr(vm->root.base.bo);

+   vm->pd_phys_addr = amdgpu_gmc_pd_addr(vm->root.bo);
  
  	if (vm->use_cpu_for_update) {

ret = amdgpu_bo_kmap(pd, NULL);
@@ -387,7 +387,7 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
  
  static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync)

  {
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
int ret;
  
@@ -1153,7 +1153,7 @@ static int process_sync_pds_resv(struct amdkfd_process_info *process_info,
  
  	list_for_each_entry(peer_vm, _info->vm_list_head,

vm_list_node) {
-   struct amdgpu_bo *pd = peer_vm->root.base.bo;
+   struct amdgpu_bo *pd = peer_vm->root.bo;
  
  		ret = amdgpu_sync_resv(NULL, sync, pd->tbo.base.resv,

   AMDGPU_SYNC_NE_OWNER,
@@ -1220,7 +1220,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
vm->process_info = *process_info;
  
  	/* Validate page directory and attach eviction fence */

-   ret = amdgpu_bo_reserve(vm->root.base.bo, true);
+   ret = amdgpu_bo_reserve(vm->root.bo, true);
if (ret)
goto reserve_pd_fail;
ret = vm_validate_pt_pd_bos(vm);
@@ -1228,16 +1228,16 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
pr_err("validate_pt_pd_bos() failed\n");
goto validate_pd_fail;
}
-   ret = amdgpu_bo_sync_wait(vm->root.base.bo,
+   ret = amdgpu_bo_sync_wait(vm->root.bo,
  AMDGPU_FENCE_OWNER_KFD, false);
if (ret)
goto wait_pd_fail;
-   ret = dma_resv_reserve_shared(vm->root.base.bo->tbo.base.resv, 1);
+   ret = dma_resv_reserve_shared(vm->root.bo->tbo.base.resv, 1);
if (ret)
goto reserve_shared_fail;
-   amdgpu_bo_fence(vm->root.base.bo,
+   amdgpu_bo_fence(vm->root.bo,
>process_info->eviction_fence->base, true);
-   amdgpu_bo_unreserve(vm->root.base.bo);
+   amdgpu_bo_unreserve(vm->root.bo);
  
  	/* Update process info */

mutex_lock(>process_info->lock);
@@ -1251,7 +1251,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
  reserve_shared_fail:
  wait_pd_fail:
  validate_pd_fail:
-   amdgpu_bo_unreserve(vm->root.base.bo);
+   amdgpu_bo_unreserve(vm->root.bo);
  reserve_pd_fail:
vm->process_info = NULL;
if (info) {
@@ -1306,7 +1306,7 @@ void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device 
*adev,
struct amdgpu_vm *vm)
  {
struct amdkfd_process_info *process_info = vm->process_info;
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
  
  	if (!process_info)

return;
@@ -1362,7 +1362,7 @@ void amdgpu_amdkfd_gpuvm_release_process_vm(struct 
kgd_dev *kgd, void *drm_priv)
  uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *drm_priv)
  {
struct amdgpu_vm *avm 

Re: [PATCH 1/1] drm/amdgpu: remove amdgpu_vm_pt

2021-06-14 Thread Das, Nirmoy

ping.

On 6/10/2021 7:24 PM, Nirmoy Das wrote:

Page table entries are now in embedded in VM BO, so
we do not need struct amdgpu_vm_pt. This patch replaces
struct amdgpu_vm_pt with struct amdgpu_vm_bo_base.

Signed-off-by: Nirmoy Das 
---
  .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c  |  26 +--
  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c|   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c   |   4 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c   |   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c|   4 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c   |  12 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c   |   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_object.h|   2 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c| 164 --
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h|   9 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c   |   2 +-
  drivers/gpu/drm/amd/amdkfd/kfd_svm.c  |   2 +-
  12 files changed, 105 insertions(+), 126 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index fb6bcc386de1..f96598279593 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -356,7 +356,7 @@ static int amdgpu_amdkfd_validate_vm_bo(void *_unused, 
struct amdgpu_bo *bo)
   */
  static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
  {
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
int ret;
  
@@ -372,7 +372,7 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)

return ret;
}
  
-	vm->pd_phys_addr = amdgpu_gmc_pd_addr(vm->root.base.bo);

+   vm->pd_phys_addr = amdgpu_gmc_pd_addr(vm->root.bo);
  
  	if (vm->use_cpu_for_update) {

ret = amdgpu_bo_kmap(pd, NULL);
@@ -387,7 +387,7 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
  
  static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync)

  {
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
int ret;
  
@@ -1153,7 +1153,7 @@ static int process_sync_pds_resv(struct amdkfd_process_info *process_info,
  
  	list_for_each_entry(peer_vm, _info->vm_list_head,

vm_list_node) {
-   struct amdgpu_bo *pd = peer_vm->root.base.bo;
+   struct amdgpu_bo *pd = peer_vm->root.bo;
  
  		ret = amdgpu_sync_resv(NULL, sync, pd->tbo.base.resv,

   AMDGPU_SYNC_NE_OWNER,
@@ -1220,7 +1220,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
vm->process_info = *process_info;
  
  	/* Validate page directory and attach eviction fence */

-   ret = amdgpu_bo_reserve(vm->root.base.bo, true);
+   ret = amdgpu_bo_reserve(vm->root.bo, true);
if (ret)
goto reserve_pd_fail;
ret = vm_validate_pt_pd_bos(vm);
@@ -1228,16 +1228,16 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
pr_err("validate_pt_pd_bos() failed\n");
goto validate_pd_fail;
}
-   ret = amdgpu_bo_sync_wait(vm->root.base.bo,
+   ret = amdgpu_bo_sync_wait(vm->root.bo,
  AMDGPU_FENCE_OWNER_KFD, false);
if (ret)
goto wait_pd_fail;
-   ret = dma_resv_reserve_shared(vm->root.base.bo->tbo.base.resv, 1);
+   ret = dma_resv_reserve_shared(vm->root.bo->tbo.base.resv, 1);
if (ret)
goto reserve_shared_fail;
-   amdgpu_bo_fence(vm->root.base.bo,
+   amdgpu_bo_fence(vm->root.bo,
>process_info->eviction_fence->base, true);
-   amdgpu_bo_unreserve(vm->root.base.bo);
+   amdgpu_bo_unreserve(vm->root.bo);
  
  	/* Update process info */

mutex_lock(>process_info->lock);
@@ -1251,7 +1251,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
  reserve_shared_fail:
  wait_pd_fail:
  validate_pd_fail:
-   amdgpu_bo_unreserve(vm->root.base.bo);
+   amdgpu_bo_unreserve(vm->root.bo);
  reserve_pd_fail:
vm->process_info = NULL;
if (info) {
@@ -1306,7 +1306,7 @@ void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device 
*adev,
struct amdgpu_vm *vm)
  {
struct amdkfd_process_info *process_info = vm->process_info;
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
  
  	if (!process_info)

return;
@@ -1362,7 +1362,7 @@ void amdgpu_amdkfd_gpuvm_release_process_vm(struct 
kgd_dev *kgd, void *drm_priv)
  uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *drm_priv)
  {
struct amdgpu_vm *avm = drm_priv_to_vm(drm_priv);
-   struct amdgpu_bo *pd = avm->root.base.bo;
+   

[PATCH 1/1] drm/amdgpu: remove amdgpu_vm_pt

2021-06-10 Thread Nirmoy Das
Page table entries are now in embedded in VM BO, so
we do not need struct amdgpu_vm_pt. This patch replaces
struct amdgpu_vm_pt with struct amdgpu_vm_bo_base.

Signed-off-by: Nirmoy Das 
---
 .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c  |  26 +--
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c|   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c   |   4 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c   |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c|   4 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c   |  12 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c   |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h|   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c| 164 --
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h|   9 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c   |   2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c  |   2 +-
 12 files changed, 105 insertions(+), 126 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index fb6bcc386de1..f96598279593 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -356,7 +356,7 @@ static int amdgpu_amdkfd_validate_vm_bo(void *_unused, 
struct amdgpu_bo *bo)
  */
 static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
 {
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
int ret;
 
@@ -372,7 +372,7 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
return ret;
}
 
-   vm->pd_phys_addr = amdgpu_gmc_pd_addr(vm->root.base.bo);
+   vm->pd_phys_addr = amdgpu_gmc_pd_addr(vm->root.bo);
 
if (vm->use_cpu_for_update) {
ret = amdgpu_bo_kmap(pd, NULL);
@@ -387,7 +387,7 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
 
 static int vm_update_pds(struct amdgpu_vm *vm, struct amdgpu_sync *sync)
 {
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
int ret;
 
@@ -1153,7 +1153,7 @@ static int process_sync_pds_resv(struct 
amdkfd_process_info *process_info,
 
list_for_each_entry(peer_vm, _info->vm_list_head,
vm_list_node) {
-   struct amdgpu_bo *pd = peer_vm->root.base.bo;
+   struct amdgpu_bo *pd = peer_vm->root.bo;
 
ret = amdgpu_sync_resv(NULL, sync, pd->tbo.base.resv,
   AMDGPU_SYNC_NE_OWNER,
@@ -1220,7 +1220,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
vm->process_info = *process_info;
 
/* Validate page directory and attach eviction fence */
-   ret = amdgpu_bo_reserve(vm->root.base.bo, true);
+   ret = amdgpu_bo_reserve(vm->root.bo, true);
if (ret)
goto reserve_pd_fail;
ret = vm_validate_pt_pd_bos(vm);
@@ -1228,16 +1228,16 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
pr_err("validate_pt_pd_bos() failed\n");
goto validate_pd_fail;
}
-   ret = amdgpu_bo_sync_wait(vm->root.base.bo,
+   ret = amdgpu_bo_sync_wait(vm->root.bo,
  AMDGPU_FENCE_OWNER_KFD, false);
if (ret)
goto wait_pd_fail;
-   ret = dma_resv_reserve_shared(vm->root.base.bo->tbo.base.resv, 1);
+   ret = dma_resv_reserve_shared(vm->root.bo->tbo.base.resv, 1);
if (ret)
goto reserve_shared_fail;
-   amdgpu_bo_fence(vm->root.base.bo,
+   amdgpu_bo_fence(vm->root.bo,
>process_info->eviction_fence->base, true);
-   amdgpu_bo_unreserve(vm->root.base.bo);
+   amdgpu_bo_unreserve(vm->root.bo);
 
/* Update process info */
mutex_lock(>process_info->lock);
@@ -1251,7 +1251,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void 
**process_info,
 reserve_shared_fail:
 wait_pd_fail:
 validate_pd_fail:
-   amdgpu_bo_unreserve(vm->root.base.bo);
+   amdgpu_bo_unreserve(vm->root.bo);
 reserve_pd_fail:
vm->process_info = NULL;
if (info) {
@@ -1306,7 +1306,7 @@ void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device 
*adev,
struct amdgpu_vm *vm)
 {
struct amdkfd_process_info *process_info = vm->process_info;
-   struct amdgpu_bo *pd = vm->root.base.bo;
+   struct amdgpu_bo *pd = vm->root.bo;
 
if (!process_info)
return;
@@ -1362,7 +1362,7 @@ void amdgpu_amdkfd_gpuvm_release_process_vm(struct 
kgd_dev *kgd, void *drm_priv)
 uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *drm_priv)
 {
struct amdgpu_vm *avm = drm_priv_to_vm(drm_priv);
-   struct amdgpu_bo *pd = avm->root.base.bo;
+   struct amdgpu_bo *pd = avm->root.bo;