Message ID | 20210107030127.20393-13-Felix.Kuehling@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add HMM-based SVM memory manager to KFD | expand |
Am 07.01.21 um 04:01 schrieb Felix Kuehling: > From: Philip Yang <Philip.Yang@amd.com> > > It will be used by kfd to map svm range to GPU, because svm range does > not have amdgpu_bo and bo_va, cannot use amdgpu_bo_update interface, use > amdgpu vm update interface directly. > > Signed-off-by: Philip Yang <Philip.Yang@amd.com> > Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 17 ++++++++--------- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 10 ++++++++++ > 2 files changed, 18 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index fdbe7d4e8b8b..9c557e8bf0e5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -1589,15 +1589,14 @@ static int amdgpu_vm_update_ptes(struct amdgpu_vm_update_params *params, > * Returns: > * 0 for success, -EINVAL for failure. > */ > -static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, > - struct amdgpu_device *bo_adev, > - struct amdgpu_vm *vm, bool immediate, > - bool unlocked, struct dma_resv *resv, > - uint64_t start, uint64_t last, > - uint64_t flags, uint64_t offset, > - struct drm_mm_node *nodes, > - dma_addr_t *pages_addr, > - struct dma_fence **fence) > +int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, > + struct amdgpu_device *bo_adev, > + struct amdgpu_vm *vm, bool immediate, > + bool unlocked, struct dma_resv *resv, > + uint64_t start, uint64_t last, uint64_t flags, > + uint64_t offset, struct drm_mm_node *nodes, > + dma_addr_t *pages_addr, > + struct dma_fence **fence) > { > struct amdgpu_vm_update_params params; > enum amdgpu_sync_mode sync_mode; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > index 2bf4ef5fb3e1..73ca630520fd 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > @@ -366,6 +366,8 @@ struct amdgpu_vm_manager { > spinlock_t pasid_lock; > }; > > +struct amdgpu_bo_va_mapping; > + > #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) > #define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr))) > #define amdgpu_vm_set_pte_pde(adev, ib, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->set_pte_pde((ib), (pe), (addr), (count), (incr), (flags))) > @@ -397,6 +399,14 @@ int amdgpu_vm_clear_freed(struct amdgpu_device *adev, > struct dma_fence **fence); > int amdgpu_vm_handle_moved(struct amdgpu_device *adev, > struct amdgpu_vm *vm); > +int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, > + struct amdgpu_device *bo_adev, > + struct amdgpu_vm *vm, bool immediate, > + bool unlocked, struct dma_resv *resv, > + uint64_t start, uint64_t last, uint64_t flags, > + uint64_t offset, struct drm_mm_node *nodes, > + dma_addr_t *pages_addr, > + struct dma_fence **fence); > int amdgpu_vm_bo_update(struct amdgpu_device *adev, > struct amdgpu_bo_va *bo_va, > bool clear);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index fdbe7d4e8b8b..9c557e8bf0e5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -1589,15 +1589,14 @@ static int amdgpu_vm_update_ptes(struct amdgpu_vm_update_params *params, * Returns: * 0 for success, -EINVAL for failure. */ -static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, - struct amdgpu_device *bo_adev, - struct amdgpu_vm *vm, bool immediate, - bool unlocked, struct dma_resv *resv, - uint64_t start, uint64_t last, - uint64_t flags, uint64_t offset, - struct drm_mm_node *nodes, - dma_addr_t *pages_addr, - struct dma_fence **fence) +int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, + struct amdgpu_device *bo_adev, + struct amdgpu_vm *vm, bool immediate, + bool unlocked, struct dma_resv *resv, + uint64_t start, uint64_t last, uint64_t flags, + uint64_t offset, struct drm_mm_node *nodes, + dma_addr_t *pages_addr, + struct dma_fence **fence) { struct amdgpu_vm_update_params params; enum amdgpu_sync_mode sync_mode; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h index 2bf4ef5fb3e1..73ca630520fd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -366,6 +366,8 @@ struct amdgpu_vm_manager { spinlock_t pasid_lock; }; +struct amdgpu_bo_va_mapping; + #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) #define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr))) #define amdgpu_vm_set_pte_pde(adev, ib, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->set_pte_pde((ib), (pe), (addr), (count), (incr), (flags))) @@ -397,6 +399,14 @@ int amdgpu_vm_clear_freed(struct amdgpu_device *adev, struct dma_fence **fence); int amdgpu_vm_handle_moved(struct amdgpu_device *adev, struct amdgpu_vm *vm); +int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, + struct amdgpu_device *bo_adev, + struct amdgpu_vm *vm, bool immediate, + bool unlocked, struct dma_resv *resv, + uint64_t start, uint64_t last, uint64_t flags, + uint64_t offset, struct drm_mm_node *nodes, + dma_addr_t *pages_addr, + struct dma_fence **fence); int amdgpu_vm_bo_update(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va, bool clear);