Lines Matching full:attachment
467 struct kfd_mem_attachment *attachment) in kfd_mem_dmamap_userptr() argument
473 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmamap_userptr()
474 struct amdgpu_device *adev = attachment->adev; in kfd_mem_dmamap_userptr()
520 kfd_mem_dmamap_dmabuf(struct kfd_mem_attachment *attachment) in kfd_mem_dmamap_dmabuf() argument
523 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmamap_dmabuf()
531 struct kfd_mem_attachment *attachment) in kfd_mem_dmamap_attachment() argument
533 switch (attachment->type) { in kfd_mem_dmamap_attachment()
537 return kfd_mem_dmamap_userptr(mem, attachment); in kfd_mem_dmamap_attachment()
539 return kfd_mem_dmamap_dmabuf(attachment); in kfd_mem_dmamap_attachment()
548 struct kfd_mem_attachment *attachment) in kfd_mem_dmaunmap_userptr() argument
554 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmaunmap_userptr()
555 struct amdgpu_device *adev = attachment->adev; in kfd_mem_dmaunmap_userptr()
571 kfd_mem_dmaunmap_dmabuf(struct kfd_mem_attachment *attachment) in kfd_mem_dmaunmap_dmabuf() argument
574 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmaunmap_dmabuf()
582 struct kfd_mem_attachment *attachment) in kfd_mem_dmaunmap_attachment() argument
584 switch (attachment->type) { in kfd_mem_dmaunmap_attachment()
588 kfd_mem_dmaunmap_userptr(mem, attachment); in kfd_mem_dmaunmap_attachment()
591 kfd_mem_dmaunmap_dmabuf(attachment); in kfd_mem_dmaunmap_attachment()
679 struct kfd_mem_attachment *attachment[2] = {NULL, NULL}; in kfd_mem_attach() local
689 attachment[i] = kzalloc(sizeof(*attachment[i]), GFP_KERNEL); in kfd_mem_attach()
690 if (unlikely(!attachment[i])) { in kfd_mem_attach()
703 attachment[i]->type = KFD_MEM_ATT_SHARED; in kfd_mem_attach()
708 attachment[i]->type = KFD_MEM_ATT_SHARED; in kfd_mem_attach()
713 attachment[i]->type = KFD_MEM_ATT_USERPTR; in kfd_mem_attach()
723 attachment[i]->type = KFD_MEM_ATT_DMABUF; in kfd_mem_attach()
731 attachment[i]->type = KFD_MEM_ATT_SHARED; in kfd_mem_attach()
737 attachment[i]->bo_va = amdgpu_vm_bo_add(adev, vm, bo[i]); in kfd_mem_attach()
738 if (unlikely(!attachment[i]->bo_va)) { in kfd_mem_attach()
745 attachment[i]->va = va; in kfd_mem_attach()
746 attachment[i]->pte_flags = get_pte_flags(adev, mem); in kfd_mem_attach()
747 attachment[i]->adev = adev; in kfd_mem_attach()
748 list_add(&attachment[i]->list, &mem->attachments); in kfd_mem_attach()
757 if (!attachment[i]) in kfd_mem_attach()
759 if (attachment[i]->bo_va) { in kfd_mem_attach()
760 amdgpu_vm_bo_rmv(adev, attachment[i]->bo_va); in kfd_mem_attach()
761 list_del(&attachment[i]->list); in kfd_mem_attach()
765 kfree(attachment[i]); in kfd_mem_attach()
770 static void kfd_mem_detach(struct kfd_mem_attachment *attachment) in kfd_mem_detach() argument
772 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_detach()
775 attachment->va, attachment); in kfd_mem_detach()
776 amdgpu_vm_bo_rmv(attachment->adev, attachment->bo_va); in kfd_mem_detach()
778 list_del(&attachment->list); in kfd_mem_detach()
779 kfree(attachment); in kfd_mem_detach()
2128 struct kfd_mem_attachment *attachment; in validate_invalid_user_pages() local
2151 list_for_each_entry(attachment, &mem->attachments, list) { in validate_invalid_user_pages()
2152 if (!attachment->is_mapped) in validate_invalid_user_pages()
2155 kfd_mem_dmaunmap_attachment(mem, attachment); in validate_invalid_user_pages()
2156 ret = update_gpuvm_pte(mem, attachment, &sync, NULL); in validate_invalid_user_pages()
2337 struct kfd_mem_attachment *attachment; in amdgpu_amdkfd_gpuvm_restore_process_bos() local
2357 list_for_each_entry(attachment, &mem->attachments, list) { in amdgpu_amdkfd_gpuvm_restore_process_bos()
2358 if (!attachment->is_mapped) in amdgpu_amdkfd_gpuvm_restore_process_bos()
2361 kfd_mem_dmaunmap_attachment(mem, attachment); in amdgpu_amdkfd_gpuvm_restore_process_bos()
2362 ret = update_gpuvm_pte(mem, attachment, &sync_obj, NULL); in amdgpu_amdkfd_gpuvm_restore_process_bos()