Lines Matching defs:start

77 svm_range_check_vm(struct kfd_process *p, uint64_t start, uint64_t last,
95 prange, prange->start, prange->last);
104 if (prange->it_node.start != 0 && prange->it_node.last != 0)
112 prange, prange->start, prange->last);
115 prange->start << PAGE_SHIFT,
131 prange, prange->start, prange->last);
134 prange->it_node.start = prange->start;
143 prange->notifier.interval_tree.start >> PAGE_SHIFT,
146 if (prange->notifier.interval_tree.start != 0 &&
187 bo_adev->kfd.pgmap.range.start;
282 uint64_t size = (prange->last - prange->start + 1) << PAGE_SHIFT;
286 prange->start, prange->last);
313 svm_range *svm_range_new(struct svm_range_list *svms, uint64_t start,
316 uint64_t size = last - start + 1;
334 prange->start = start;
354 pr_debug("svms 0x%p [0x%llx 0x%llx]\n", svms, start, last);
386 prange->start, prange->last);
502 prange->svms, prange->start, prange->last);
553 prange->start, prange->last);
597 bo->tbo.resource->start << PAGE_SHIFT, bp.size,
858 * debug output svm range start, end, prefetch location from svms
873 prange, prange->start, prange->npages,
874 prange->start + prange->npages - 1,
884 prange, prange->start, prange->npages,
885 prange->start + prange->npages - 1,
955 uint64_t start, uint64_t last)
957 uint64_t npages = last - start + 1;
962 sizeof(*old->dma_addr[i]), old->start,
963 npages, new->start, new->npages);
973 uint64_t start, uint64_t last)
975 uint64_t npages = last - start + 1;
977 pr_debug("svms 0x%p new prange 0x%p start 0x%lx [0x%llx 0x%llx]\n",
978 new->svms, new, new->start, start, last);
980 if (new->start == old->start) {
1002 * @start: the old range adjust to start address in pages
1007 * start to last
1014 uint64_t start, uint64_t last)
1019 new->svms, new->start, old->start, old->last, start, last);
1021 if (new->start < old->start ||
1023 WARN_ONCE(1, "invalid new range start or last\n");
1027 r = svm_range_split_pages(new, old, start, last);
1032 r = svm_range_split_nodes(new, old, start, last);
1037 old->npages = last - start + 1;
1038 old->start = start;
1056 * @start: the remaining range start address in pages
1061 * case 1: if start == prange->start
1062 * prange ==> prange[start, last]
1066 * prange ==> prange[start, last]
1067 * new range [prange->start, start - 1]
1070 * 0 - OK, -ENOMEM - out of memory, -EINVAL - invalid start, last
1073 svm_range_split(struct svm_range *prange, uint64_t start, uint64_t last,
1076 uint64_t old_start = prange->start;
1082 old_start, old_last, start, last);
1084 if (old_start != start && old_last != last)
1086 if (start < old_start || last > old_last)
1090 if (old_start == start)
1093 *new = svm_range_new(svms, old_start, start - 1, false);
1097 r = svm_range_split_adjust(*new, prange, start, last);
1100 r, old_start, old_last, start, last);
1113 int r = svm_range_split(prange, prange->start, new_last, &tail);
1137 pchild, pchild->start, pchild->last, prange, op);
1167 unsigned long start, last, size;
1170 /* Align splited range start and size to granularity size, then a single
1175 start = ALIGN_DOWN(addr, size);
1179 prange->svms, prange->start, prange->last, start, last, size);
1181 if (start > prange->start) {
1182 r = svm_range_split(prange, start, prange->last, &head);
1189 r = svm_range_split(prange, prange->start, last, &tail);
1199 prange, prange->start, prange->last,
1315 uint64_t start, uint64_t last,
1320 pr_debug("[0x%llx 0x%llx]\n", start, last);
1322 return amdgpu_vm_update_range(adev, vm, false, true, true, NULL, start,
1328 svm_range_unmap_from_gpus(struct svm_range *prange, unsigned long start,
1340 prange, prange->start, prange->last);
1344 if (prange->start == start && prange->last == last) {
1362 start, last, trigger);
1366 start, last, &fence);
1397 last_start = prange->start + offset;
1414 last_start, prange->start + i, last_domain ? "GPU" : "CPU");
1421 prange->svms, last_start, prange->start + i,
1430 last_start, prange->start + i,
1432 (last_start - prange->start) << PAGE_SHIFT,
1436 for (j = last_start - prange->start; j <= i; j++)
1440 pr_debug("failed %d to map to gpu 0x%lx\n", r, prange->start);
1443 last_start = prange->start + i + 1;
1449 prange->start);
1621 unsigned long start, end, addr;
1697 start = prange->start << PAGE_SHIFT;
1699 for (addr = start; !r && addr < end; ) {
1728 offset = (addr - start) >> PAGE_SHIFT;
1833 prange->svms, prange, prange->start, prange->last,
1845 prange->start);
1891 * @start: starting process queue number
1900 * restart to ensure to get the latest CPU pages mapping to GPU, then start
1905 unsigned long start, unsigned long last,
1916 svms, prange->start, prange->last, start, last);
1928 if (pchild->start <= last && pchild->last >= start) {
1930 pchild->start, pchild->last);
1939 if (prange->start <= last && prange->last >= start)
1947 prange->svms, prange->start, prange->last);
1967 prange->svms, start, last);
1970 s = max(start, pchild->start);
1976 s = max(start, prange->start);
1989 new = svm_range_new(old->svms, old->start, old->last, false);
2041 svm_range_split_new(struct svm_range_list *svms, uint64_t start, uint64_t last,
2049 max_pages, start, last);
2051 while (last >= start) {
2052 l = min(last, ALIGN_DOWN(start + max_pages, max_pages) - 1);
2054 prange = svm_range_new(svms, start, l, true);
2060 start = l + 1;
2068 * @start: page size aligned
2095 svm_range_add(struct kfd_process *p, uint64_t start, uint64_t size,
2100 unsigned long last = start + size - 1UL;
2108 pr_debug("svms 0x%p [0x%llx 0x%lx]\n", &p->svms, start, last);
2115 node = interval_tree_iter_first(&svms->objects, start, last);
2120 pr_debug("found overlap node [0x%lx 0x%lx]\n", node->start,
2124 next = interval_tree_iter_next(node, start, last);
2130 } else if (node->start < start || node->last > last) {
2147 if (node->start < start) {
2148 pr_debug("change old range start\n");
2149 r = svm_range_split_head(prange, start,
2162 /* The node is contained within start..last,
2169 if (node->start > start) {
2170 r = svm_range_split_new(svms, start, node->start - 1,
2178 start = next_start;
2182 if (start <= last)
2183 r = svm_range_split_new(svms, start, last,
2204 unsigned long start;
2207 start = prange->notifier.interval_tree.start >> PAGE_SHIFT;
2210 if (prange->start == start && prange->last == last)
2214 prange->svms, prange, start, last, prange->start,
2217 if (start != 0 && last != 0) {
2221 prange->it_node.start = prange->start;
2235 svms, prange, prange->start, prange->last);
2239 svms, prange, prange->start, prange->last);
2246 svms, prange, prange->start, prange->last);
2251 svms, prange, prange->start, prange->last);
2257 prange->start, prange->last);
2263 prange, prange->start, prange->last);
2327 prange->start, prange->last, prange->work_item.op);
2404 prange, prange->start, prange->last, op);
2419 struct svm_range *prange, unsigned long start,
2427 prange->start, prange->last);
2430 if (start > prange->last || last < prange->start)
2434 if (start > prange->start)
2435 svm_range_split(prange, prange->start, start - 1, &tail);
2453 unsigned long start, unsigned long last)
2468 prange, prange->start, prange->last, start, last);
2476 unmap_parent = start <= prange->start && last >= prange->last;
2480 s = max(start, pchild->start);
2484 svm_range_unmap_split(mm, prange, pchild, start, last);
2487 s = max(start, prange->start);
2491 svm_range_unmap_split(mm, prange, prange, start, last);
2529 unsigned long start;
2537 start = mni->interval_tree.start;
2539 start = max(start, range->start) >> PAGE_SHIFT;
2542 start, last, range->start >> PAGE_SHIFT,
2544 mni->interval_tree.start >> PAGE_SHIFT,
2554 svm_range_unmap_from_cpu(mni->mm, prange, start, last);
2557 svm_range_evict(prange, mni->mm, start, last, range->event);
2591 addr, prange->start, prange->last, node->start, node->last);
2593 if (addr >= prange->start && addr <= prange->last) {
2599 if (addr >= pchild->start && addr <= pchild->last) {
2601 addr, pchild->start, pchild->last);
2681 unsigned long *start, unsigned long *last,
2704 end_limit = min(end_limit, node->start);
2722 *start = start_limit;
2727 *start, *last, *is_heap_stack);
2733 svm_range_check_vm_userptr(struct kfd_process *p, uint64_t start, uint64_t last,
2762 start << PAGE_SHIFT,
2770 start, last);
2790 unsigned long start, last;
2797 if (svm_range_get_range_boundaries(p, addr, &start, &last,
2801 r = svm_range_check_vm(p, start, last, &bo_s, &bo_l);
2803 r = svm_range_check_vm_userptr(p, start, last, &bo_s, &bo_l);
2810 start = addr;
2814 prange = svm_range_new(&p->svms, start, last, true);
2860 svms, prange, prange->start, prange->last);
2866 svms, prange, prange->start, prange->last);
3015 svms, prange->start, prange->last);
3040 svms, prange->start, prange->last);
3046 svms, prange->start, prange->last, best_loc,
3077 r, svms, prange->start, prange->last);
3085 r, svms, prange->start, prange->last);
3125 size = (pchild->last - pchild->start + 1) << PAGE_SHIFT;
3138 size = (prange->last - prange->start + 1) << PAGE_SHIFT;
3224 * @start: range start address, in pages
3226 * @bo_s: mapping start address in pages if address range already mapped
3242 svm_range_check_vm(struct kfd_process *p, uint64_t start, uint64_t last,
3261 node = interval_tree_iter_first(&vm->va, start, last);
3264 start, last);
3268 *bo_s = mapping->start;
3283 * @start: range start address, in pages
3294 svm_range_is_valid(struct kfd_process *p, uint64_t start, uint64_t size)
3299 unsigned long start_unchg = start;
3301 start <<= PAGE_SHIFT;
3302 end = start + (size << PAGE_SHIFT);
3304 vma = vma_lookup(p->mm, start);
3307 start = min(end, vma->vm_end);
3308 } while (start < end);
3391 p->xnack_enabled, &p->svms, prange->start, prange->last,
3397 /* svm_range_trigger_migration - start page migration if prefetch loc changed
3492 prange->start, prange->last);
3527 uint64_t start, uint64_t size, uint32_t nattr,
3542 p->pasid, &p->svms, start, start + size - 1, size);
3554 r = svm_range_is_valid(p, start, size);
3564 r = svm_range_add(p, start, size, nattr, attrs, &update_list,
3582 prange->svms, prange, prange->start,
3638 &p->svms, start, start + size - 1, r);
3645 uint64_t start, uint64_t size, uint32_t nattr,
3655 uint64_t last = start + size - 1UL;
3668 pr_debug("svms 0x%p [0x%llx 0x%llx] nattr 0x%x\n", &p->svms, start,
3669 start + size - 1, nattr);
3680 r = svm_range_is_valid(p, start, size);
3718 node = interval_tree_iter_first(&svms->objects, start, last);
3739 next = interval_tree_iter_next(node, start, last);
3994 pr_debug("prange: 0x%p start: 0x%lx\t npages: 0x%llx\t end: 0x%llx\n",
3995 prange, prange->start, prange->npages,
3996 prange->start + prange->npages - 1);
4092 svm_priv->start_addr = prange->start;
4095 pr_debug("CRIU: prange: 0x%p start: 0x%lx\t npages: 0x%llx end: 0x%llx\t size: 0x%llx\n",
4096 prange, prange->start, prange->npages,
4097 prange->start + prange->npages - 1,
4131 svm_ioctl(struct kfd_process *p, enum kfd_ioctl_svm_op op, uint64_t start,
4137 start >>= PAGE_SHIFT;
4142 r = svm_range_set_attr(p, mm, start, size, nattrs, attrs);
4145 r = svm_range_get_attr(p, mm, start, size, nattrs, attrs);