[PATCH 25/95] drm/amdgpu: Initialize VM for NPA addr management
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
From: Mukul Joshi <[email protected]> Initialize a NPA VM for managing NPA addresses on the exporter GPU. Signed-off-by: Mukul Joshi <[email protected]> Reviewed-by: Felix Kuehling <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c | 18 +++++++++++++++++- drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h | 3 +++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c index 9c8601f4d16be..db9dce8fa8708 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c @@ -1111,10 +1111,20 @@ int amdgpu_ualink_manager_start(struct amdgpu_device *adev) { int i, r; + r = amdgpu_vm_init(adev, &adev->ualink.npa_vm, 0); + if (r) + goto out; + + /* For using CPU for page table updates. */ + r = amdgpu_vm_make_compute(adev, &adev->ualink.npa_vm); + if (r) + goto uninit_vm; + adev->ualink.npa_wq = alloc_workqueue("NPA WQ", WQ_UNBOUND, 0); if (unlikely(!adev->ualink.npa_wq)) { dev_err(adev->dev, "Failed to allocate NPA WQ\n"); - return -ENOMEM; + r = -ENOMEM; + goto uninit_vm; } xa_init_flags(&adev->ualink.exp_xa, XA_FLAGS_LOCK_BH); @@ -1132,6 +1142,11 @@ int amdgpu_ualink_manager_start(struct amdgpu_device *adev) amdgpu_ualink_npa_mm_init(adev); return 0; + +uninit_vm: + amdgpu_vm_fini(adev, &adev->ualink.npa_vm); +out: + return r; } void amdgpu_ualink_manager_stop(struct amdgpu_device *adev) @@ -1148,4 +1163,5 @@ void amdgpu_ualink_manager_stop(struct amdgpu_device *adev) mutex_destroy(&adev->ualink.conn_state[i].lock); destroy_workqueue(adev->ualink.npa_wq); + amdgpu_vm_fini(adev, &adev->ualink.npa_vm); } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h index 95e770b69a48b..506335b56c3b8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h @@ -170,6 +170,9 @@ struct amdgpu_ualink_mgr { /* Memory-manager for managing NPA address space. */ struct amdgpu_ualink_npa_mm npa_mm; + + /* NPA-VM used on the exporter.*/ + struct amdgpu_vm npa_vm; }; int amdgpu_ualink_sysfs_init(struct amdgpu_device *adev); -- 2.55.0