Lines Matching full:attachment
544 struct kfd_mem_attachment *attachment) in kfd_mem_dmamap_userptr() argument
550 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmamap_userptr()
551 struct amdgpu_device *adev = attachment->adev; in kfd_mem_dmamap_userptr()
594 kfd_mem_dmamap_dmabuf(struct kfd_mem_attachment *attachment) in kfd_mem_dmamap_dmabuf() argument
597 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmamap_dmabuf()
612 * @attachment: Virtual address attachment of the BO on accessing device
637 struct kfd_mem_attachment *attachment) in kfd_mem_dmamap_sg_bo() argument
640 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmamap_sg_bo()
641 struct amdgpu_device *adev = attachment->adev; in kfd_mem_dmamap_sg_bo()
692 struct kfd_mem_attachment *attachment) in kfd_mem_dmamap_attachment() argument
694 switch (attachment->type) { in kfd_mem_dmamap_attachment()
698 return kfd_mem_dmamap_userptr(mem, attachment); in kfd_mem_dmamap_attachment()
700 return kfd_mem_dmamap_dmabuf(attachment); in kfd_mem_dmamap_attachment()
702 return kfd_mem_dmamap_sg_bo(mem, attachment); in kfd_mem_dmamap_attachment()
711 struct kfd_mem_attachment *attachment) in kfd_mem_dmaunmap_userptr() argument
717 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmaunmap_userptr()
718 struct amdgpu_device *adev = attachment->adev; in kfd_mem_dmaunmap_userptr()
734 kfd_mem_dmaunmap_dmabuf(struct kfd_mem_attachment *attachment) in kfd_mem_dmaunmap_dmabuf() argument
745 * @attachment: Virtual address attachment of the BO on accessing device
760 struct kfd_mem_attachment *attachment) in kfd_mem_dmaunmap_sg_bo() argument
763 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_dmaunmap_sg_bo()
764 struct amdgpu_device *adev = attachment->adev; in kfd_mem_dmaunmap_sg_bo()
788 struct kfd_mem_attachment *attachment) in kfd_mem_dmaunmap_attachment() argument
790 switch (attachment->type) { in kfd_mem_dmaunmap_attachment()
794 kfd_mem_dmaunmap_userptr(mem, attachment); in kfd_mem_dmaunmap_attachment()
797 kfd_mem_dmaunmap_dmabuf(attachment); in kfd_mem_dmaunmap_attachment()
800 kfd_mem_dmaunmap_sg_bo(mem, attachment); in kfd_mem_dmaunmap_attachment()
871 struct kfd_mem_attachment *attachment[2] = {NULL, NULL}; in kfd_mem_attach() local
901 attachment[i] = kzalloc(sizeof(*attachment[i]), GFP_KERNEL); in kfd_mem_attach()
902 if (unlikely(!attachment[i])) { in kfd_mem_attach()
918 attachment[i]->type = KFD_MEM_ATT_SHARED; in kfd_mem_attach()
923 attachment[i]->type = KFD_MEM_ATT_SHARED; in kfd_mem_attach()
928 attachment[i]->type = KFD_MEM_ATT_USERPTR; in kfd_mem_attach()
937 attachment[i]->type = KFD_MEM_ATT_SG; in kfd_mem_attach()
944 attachment[i]->type = KFD_MEM_ATT_DMABUF; in kfd_mem_attach()
966 attachment[i]->bo_va = bo_va; in kfd_mem_attach()
968 if (unlikely(!attachment[i]->bo_va)) { in kfd_mem_attach()
974 attachment[i]->va = va; in kfd_mem_attach()
975 attachment[i]->pte_flags = get_pte_flags(adev, mem); in kfd_mem_attach()
976 attachment[i]->adev = adev; in kfd_mem_attach()
977 list_add(&attachment[i]->list, &mem->attachments); in kfd_mem_attach()
986 if (!attachment[i]) in kfd_mem_attach()
988 if (attachment[i]->bo_va) { in kfd_mem_attach()
990 if (--attachment[i]->bo_va->ref_count == 0) in kfd_mem_attach()
991 amdgpu_vm_bo_del(adev, attachment[i]->bo_va); in kfd_mem_attach()
993 list_del(&attachment[i]->list); in kfd_mem_attach()
997 kfree(attachment[i]); in kfd_mem_attach()
1002 static void kfd_mem_detach(struct kfd_mem_attachment *attachment) in kfd_mem_detach() argument
1004 struct amdgpu_bo *bo = attachment->bo_va->base.bo; in kfd_mem_detach()
1007 attachment->va, attachment); in kfd_mem_detach()
1008 if (--attachment->bo_va->ref_count == 0) in kfd_mem_detach()
1009 amdgpu_vm_bo_del(attachment->adev, attachment->bo_va); in kfd_mem_detach()
1011 list_del(&attachment->list); in kfd_mem_detach()
1012 kfree(attachment); in kfd_mem_detach()
2645 struct kfd_mem_attachment *attachment; in validate_invalid_user_pages() local
2665 list_for_each_entry(attachment, &mem->attachments, list) { in validate_invalid_user_pages()
2666 if (!attachment->is_mapped) in validate_invalid_user_pages()
2669 kfd_mem_dmaunmap_attachment(mem, attachment); in validate_invalid_user_pages()
2670 ret = update_gpuvm_pte(mem, attachment, &sync); in validate_invalid_user_pages()
2908 struct kfd_mem_attachment *attachment; in amdgpu_amdkfd_gpuvm_restore_process_bos() local
2933 list_for_each_entry(attachment, &mem->attachments, list) { in amdgpu_amdkfd_gpuvm_restore_process_bos()
2934 if (!attachment->is_mapped) in amdgpu_amdkfd_gpuvm_restore_process_bos()
2937 if (attachment->bo_va->base.bo->tbo.pin_count) in amdgpu_amdkfd_gpuvm_restore_process_bos()
2940 kfd_mem_dmaunmap_attachment(mem, attachment); in amdgpu_amdkfd_gpuvm_restore_process_bos()
2941 ret = update_gpuvm_pte(mem, attachment, &sync_obj); in amdgpu_amdkfd_gpuvm_restore_process_bos()