Change-Id: I5d949d61fa9d828b453187698c250633188386e0
Signed-off-by: Felix Kuehling <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h       | 3 ++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 6 ++++--
 drivers/gpu/drm/amd/amdkfd/kfd_process.c         | 2 +-
 drivers/gpu/drm/amd/include/kgd_kfd_interface.h  | 2 +-
 drivers/gpu/drm/radeon/radeon_kfd.c              | 6 ++++--
 5 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
index d9e3734..8bd34da 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
@@ -202,7 +202,8 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
                struct kgd_dev *kgd, struct kgd_mem *mem, void *vm);
 
 int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm,
-                                         void **process_info);
+                                         void **process_info,
+                                         unsigned int pasid);
 void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm);
 
 uint32_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *vm);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index 462011c..902c05d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -1385,7 +1385,8 @@ static u64 get_vm_pd_gpu_offset(void *vm)
 }
 
 int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm,
-                                         void **process_info)
+                                         void **process_info,
+                                         unsigned int pasid)
 {
        int ret;
        struct amdkfd_vm *new_vm;
@@ -1397,7 +1398,8 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev 
*kgd, void **vm,
                return -ENOMEM;
 
        /* Initialize the VM context, allocate the page directory and zero it */
-       ret = amdgpu_vm_init(adev, &new_vm->base, AMDGPU_VM_CONTEXT_COMPUTE, 0);
+       ret = amdgpu_vm_init(adev, &new_vm->base, AMDGPU_VM_CONTEXT_COMPUTE,
+                            pasid);
        if (ret != 0) {
                pr_err("Failed init vm ret %d\n", ret);
                /* Undo everything related to the new VM context */
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index a20ced0..3b11e35 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -702,7 +702,7 @@ struct kfd_process_device 
*kfd_create_process_device_data(struct kfd_dev *dev,
 
        /* Create the GPUVM context for this specific device */
        if (dev->kfd2kgd->create_process_vm(dev->kgd, &pdd->vm,
-                                       &p->process_info)) {
+                                           &p->process_info, p->pasid)) {
                pr_err("Failed to create process VM object\n");
                goto err_create_pdd;
        }
diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h 
b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
index 5833ef7..f0c6e11 100644
--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
@@ -271,7 +271,7 @@ struct kfd2kgd_calls {
        void (*free_pasid)(unsigned int pasid);
 
        int (*create_process_vm)(struct kgd_dev *kgd, void **vm,
-                                void **process_info);
+                                void **process_info, unsigned int pasid);
        void (*destroy_process_vm)(struct kgd_dev *kgd, void *vm);
 
        int (*create_process_gpumem)(struct kgd_dev *kgd, uint64_t va, size_t 
size, void *vm, struct kgd_mem **mem);
diff --git a/drivers/gpu/drm/radeon/radeon_kfd.c 
b/drivers/gpu/drm/radeon/radeon_kfd.c
index acfe34e..9daf661 100644
--- a/drivers/gpu/drm/radeon/radeon_kfd.c
+++ b/drivers/gpu/drm/radeon/radeon_kfd.c
@@ -82,7 +82,8 @@ static uint32_t get_max_engine_clock_in_mhz(struct kgd_dev 
*kgd);
 static int alloc_pasid(unsigned int bits);
 static void free_pasid(unsigned int pasid);
 
-static int create_process_vm(struct kgd_dev *kgd, void **vm, void **info);
+static int create_process_vm(struct kgd_dev *kgd, void **vm, void **info,
+                            unsigned int pasid);
 static void destroy_process_vm(struct kgd_dev *kgd, void *vm);
 
 static uint32_t get_process_page_dir(void *vm);
@@ -447,7 +448,8 @@ void free_pasid(unsigned int pasid)
 /*
  * Creates a VM context for HSA process
  */
-static int create_process_vm(struct kgd_dev *kgd, void **vm, void **info)
+static int create_process_vm(struct kgd_dev *kgd, void **vm, void **info,
+                            unsigned int pasid)
 {
        int ret;
        struct radeon_vm *new_vm;
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to