Lines Matching defs:migrate

27 #include <linux/migrate.h>
181 * @mfence: migrate fence
263 static unsigned long svm_migrate_unsuccessful_pages(struct migrate_vma *migrate)
268 for (i = 0; i < migrate->npages; i++) {
269 if (migrate->src[i] & MIGRATE_PFN_VALID &&
270 !(migrate->src[i] & MIGRATE_PFN_MIGRATE))
278 struct migrate_vma *migrate, struct dma_fence **mfence,
281 uint64_t npages = migrate->npages;
299 for (i = j = 0; (i < npages) && (mpages < migrate->cpages); i++) {
302 if (migrate->src[i] & MIGRATE_PFN_MIGRATE) {
304 migrate->dst[i] = svm_migrate_addr_to_pfn(adev, dst[i]);
305 svm_migrate_get_vram_page(prange, migrate->dst[i]);
306 migrate->dst[i] = migrate_pfn(migrate->dst[i]);
309 spage = migrate_pfn_to_page(migrate->src[i]);
363 migrate->dst[i] = 0;
373 migrate->dst[i] = 0;
375 migrate->dst[i + 1] = 0;
377 migrate->dst[i + 2] = 0;
379 migrate->dst[i + 3] = 0;
396 struct migrate_vma migrate = { 0 };
403 memset(&migrate, 0, sizeof(migrate));
404 migrate.vma = vma;
405 migrate.start = start;
406 migrate.end = end;
407 migrate.flags = MIGRATE_VMA_SELECT_SYSTEM;
408 migrate.pgmap_owner = SVM_ADEV_PGMAP_OWNER(adev);
411 2 * sizeof(*migrate.src) + sizeof(uint64_t) + sizeof(dma_addr_t),
416 migrate.src = buf;
417 migrate.dst = migrate.src + npages;
418 scratch = (dma_addr_t *)(migrate.dst + npages);
425 r = migrate_vma_setup(&migrate);
432 cpages = migrate.cpages;
434 pr_debug("failed collect migrate sys pages [0x%lx 0x%lx]\n",
444 r = svm_migrate_copy_to_vram(node, prange, &migrate, &mfence, scratch, ttm_res_offset);
445 migrate_vma_pages(&migrate);
448 migrate_vma_finalize(&migrate);
450 mpages = cpages - svm_migrate_unsuccessful_pages(&migrate);
452 mpages, cpages, migrate.npages);
473 * svm_migrate_ram_to_vram - migrate svm range from system to device
475 * @best_loc: the device to migrate to
476 * @start_mgr: start page to migrate
477 * @last_mgr: last page to migrate
543 pr_debug("failed %ld to migrate\n", r);
582 struct migrate_vma *migrate, struct dma_fence **mfence,
596 addr = migrate->start;
604 spage = migrate_pfn_to_page(migrate->src[i]);
630 dpage = svm_migrate_get_sys_page(migrate->vma, addr);
648 migrate->dst[i] = migrate_pfn(page_to_pfn(dpage));
660 migrate->dst[i] = 0;
668 * svm_migrate_vma_to_ram - migrate range inside one vma from device to system
674 * @node: kfd node device to migrate from
697 struct migrate_vma migrate = { 0 };
702 memset(&migrate, 0, sizeof(migrate));
703 migrate.vma = vma;
704 migrate.start = start;
705 migrate.end = end;
706 migrate.pgmap_owner = SVM_ADEV_PGMAP_OWNER(adev);
708 migrate.flags = MIGRATE_VMA_SELECT_DEVICE_COHERENT;
710 migrate.flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE;
713 2 * sizeof(*migrate.src) + sizeof(uint64_t) + sizeof(dma_addr_t),
718 migrate.src = buf;
719 migrate.dst = migrate.src + npages;
720 migrate.fault_page = fault_page;
721 scratch = (dma_addr_t *)(migrate.dst + npages);
728 r = migrate_vma_setup(&migrate);
735 cpages = migrate.cpages;
737 pr_debug("failed collect migrate device pages [0x%lx 0x%lx]\n",
739 upages = svm_migrate_unsuccessful_pages(&migrate);
748 r = svm_migrate_copy_to_ram(adev, prange, &migrate, &mfence,
750 migrate_vma_pages(&migrate);
752 upages = svm_migrate_unsuccessful_pages(&migrate);
754 upages, cpages, migrate.npages);
757 migrate_vma_finalize(&migrate);
778 * svm_migrate_vram_to_ram - migrate svm range from device to system
803 /* this pragne has no any vram page to migrate to sys ram */
842 pr_debug("failed %ld to migrate prange %p\n", r, prange);
866 * svm_migrate_vram_to_vram - migrate svm range from device to device
868 * @best_loc: the device to migrate to
876 * migrate all vram pages in prange to sys ram, then migrate
995 pr_debug("failed %d migrate svms 0x%p range 0x%p [0x%lx 0x%lx]\n",