Commit f80fe9d3 authored by Felix Kuehling's avatar Felix Kuehling Committed by Alex Deucher

drm/amdkfd: map svm range to GPUs

Use amdgpu_vm_bo_update_mapping to update GPU page table to map or unmap
svm range system memory pages address to GPUs.
Signed-off-by: default avatarPhilip Yang <Philip.Yang@amd.com>
Signed-off-by: default avatarAlex Sierra <alex.sierra@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d27afacf
...@@ -234,6 +234,10 @@ uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *s ...@@ -234,6 +234,10 @@ uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *s
}) })
/* GPUVM API */ /* GPUVM API */
#define drm_priv_to_vm(drm_priv) \
(&((struct amdgpu_fpriv *) \
((struct drm_file *)(drm_priv))->driver_priv)->vm)
int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd, int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd,
struct file *filp, u32 pasid, struct file *filp, u32 pasid,
void **process_info, void **process_info,
......
...@@ -948,13 +948,6 @@ static int process_update_pds(struct amdkfd_process_info *process_info, ...@@ -948,13 +948,6 @@ static int process_update_pds(struct amdkfd_process_info *process_info,
return 0; return 0;
} }
static struct amdgpu_vm *drm_priv_to_vm(struct drm_file *drm_priv)
{
struct amdgpu_fpriv *fpriv = drm_priv->driver_priv;
return &fpriv->vm;
}
static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info, static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,
struct dma_fence **ef) struct dma_fence **ef)
{ {
......
This diff is collapsed.
...@@ -57,7 +57,9 @@ struct svm_work_list_item { ...@@ -57,7 +57,9 @@ struct svm_work_list_item {
* @update_list:link list node used to add to update_list * @update_list:link list node used to add to update_list
* @remove_list:link list node used to add to remove list * @remove_list:link list node used to add to remove list
* @insert_list:link list node used to add to insert list * @insert_list:link list node used to add to insert list
* @mapping: bo_va mapping structure to create and update GPU page table
* @npages: number of pages * @npages: number of pages
* @dma_addr: dma mapping address on each GPU for system memory physical page
* @lock: protect prange start, last, child_list, svm_bo_list * @lock: protect prange start, last, child_list, svm_bo_list
* @saved_flags:save/restore current PF_MEMALLOC flags * @saved_flags:save/restore current PF_MEMALLOC flags
* @flags: flags defined as KFD_IOCTL_SVM_FLAG_* * @flags: flags defined as KFD_IOCTL_SVM_FLAG_*
...@@ -85,7 +87,9 @@ struct svm_range { ...@@ -85,7 +87,9 @@ struct svm_range {
struct list_head update_list; struct list_head update_list;
struct list_head remove_list; struct list_head remove_list;
struct list_head insert_list; struct list_head insert_list;
struct amdgpu_bo_va_mapping mapping;
uint64_t npages; uint64_t npages;
dma_addr_t *dma_addr[MAX_GPU_INSTANCE];
struct mutex lock; struct mutex lock;
unsigned int saved_flags; unsigned int saved_flags;
uint32_t flags; uint32_t flags;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment