Lines Matching defs:userptr

170  * @p_userptr: pointer to result userptr structure
173 * - Allocate userptr structure
174 * - Pin the given host memory using the userptr structure
180 struct hl_userptr *userptr;
183 userptr = kzalloc(sizeof(*userptr), GFP_KERNEL);
184 if (!userptr) {
189 rc = hl_pin_host_memory(hdev, addr, size, userptr);
195 rc = hdev->asic_funcs->asic_dma_map_sg(hdev, userptr->sgt->sgl,
196 userptr->sgt->nents, DMA_BIDIRECTIONAL);
202 userptr->dma_mapped = true;
203 userptr->dir = DMA_BIDIRECTIONAL;
204 userptr->vm_type = VM_TYPE_USERPTR;
206 *p_userptr = userptr;
211 hl_unpin_host_memory(hdev, userptr);
213 kfree(userptr);
222 * @userptr: userptr to free
226 * - Frees the userptr structure
229 struct hl_userptr *userptr)
231 hl_unpin_host_memory(hdev, userptr);
232 kfree(userptr);
625 * @userptr: userptr to initialize from
634 struct hl_userptr *userptr,
651 phys_pg_pack->vm_type = userptr->vm_type;
663 for_each_sg(userptr->sgt->sgl, sg, userptr->sgt->nents, i) {
692 for_each_sg(userptr->sgt->sgl, sg, userptr->sgt->nents, i) {
852 struct hl_userptr *userptr = NULL;
870 rc = dma_map_host_va(hdev, addr, size, &userptr);
872 dev_err(hdev->dev, "failed to get userptr from va\n");
876 rc = init_phys_pg_pack_from_userptr(ctx, userptr,
885 vm_type = (enum vm_type_t *) userptr;
1016 dma_unmap_host_va(hdev, userptr);
1037 struct hl_userptr *userptr = NULL;
1064 userptr = hnode->ptr;
1065 rc = init_phys_pg_pack_from_userptr(ctx, userptr,
1144 dma_unmap_host_va(hdev, userptr);
1285 struct hl_userptr *userptr)
1294 userptr->vec = frame_vector_create(npages);
1295 if (!userptr->vec) {
1301 userptr->vec);
1312 if (frame_vector_to_pages(userptr->vec) < 0) {
1319 rc = sg_alloc_table_from_pages(userptr->sgt,
1320 frame_vector_pages(userptr->vec),
1330 put_vaddr_frames(userptr->vec);
1332 frame_vector_destroy(userptr->vec);
1341 * @userptr: pointer to hl_userptr structure
1348 struct hl_userptr *userptr)
1375 userptr->sgt = kzalloc(sizeof(*userptr->sgt), GFP_ATOMIC);
1376 if (!userptr->sgt)
1384 userptr->size = size;
1385 userptr->addr = addr;
1386 userptr->dma_mapped = false;
1387 INIT_LIST_HEAD(&userptr->job_node);
1390 userptr);
1398 hl_debugfs_add_userptr(hdev, userptr);
1403 kfree(userptr->sgt);
1410 * @userptr: pointer to hl_userptr structure
1416 void hl_unpin_host_memory(struct hl_device *hdev, struct hl_userptr *userptr)
1420 hl_debugfs_remove_userptr(hdev, userptr);
1422 if (userptr->dma_mapped)
1423 hdev->asic_funcs->hl_dma_unmap_sg(hdev, userptr->sgt->sgl,
1424 userptr->sgt->nents,
1425 userptr->dir);
1427 pages = frame_vector_pages(userptr->vec);
1431 for (i = 0; i < frame_vector_count(userptr->vec); i++)
1434 put_vaddr_frames(userptr->vec);
1435 frame_vector_destroy(userptr->vec);
1437 list_del(&userptr->job_node);
1439 sg_free_table(userptr->sgt);
1440 kfree(userptr->sgt);
1444 * hl_userptr_delete_list - clear userptr list
1450 * - Iterates over the list and unpins the host memory and frees the userptr
1456 struct hl_userptr *userptr, *tmp;
1458 list_for_each_entry_safe(userptr, tmp, userptr_list, job_node) {
1459 hl_unpin_host_memory(hdev, userptr);
1460 kfree(userptr);
1467 * hl_userptr_is_pinned - returns whether the given userptr is pinned
1471 * @userptr : pointer to userptr to check
1474 * - Iterates over the list and checks if the given userptr is in it, means is
1479 struct hl_userptr **userptr)
1481 list_for_each_entry((*userptr), userptr_list, job_node) {
1482 if ((addr == (*userptr)->addr) && (size == (*userptr)->size))