Lines Matching refs:migrate
263 static unsigned long svm_migrate_unsuccessful_pages(struct migrate_vma *migrate) in svm_migrate_unsuccessful_pages() argument
268 for (i = 0; i < migrate->npages; i++) { in svm_migrate_unsuccessful_pages()
269 if (migrate->src[i] & MIGRATE_PFN_VALID && in svm_migrate_unsuccessful_pages()
270 !(migrate->src[i] & MIGRATE_PFN_MIGRATE)) in svm_migrate_unsuccessful_pages()
278 struct migrate_vma *migrate, struct dma_fence **mfence, in svm_migrate_copy_to_vram() argument
281 uint64_t npages = migrate->cpages; in svm_migrate_copy_to_vram()
302 migrate->dst[i] = svm_migrate_addr_to_pfn(adev, dst[i]); in svm_migrate_copy_to_vram()
303 svm_migrate_get_vram_page(prange, migrate->dst[i]); in svm_migrate_copy_to_vram()
304 migrate->dst[i] = migrate_pfn(migrate->dst[i]); in svm_migrate_copy_to_vram()
306 spage = migrate_pfn_to_page(migrate->src[i]); in svm_migrate_copy_to_vram()
358 migrate->dst[i] = 0; in svm_migrate_copy_to_vram()
367 migrate->dst[i] = 0; in svm_migrate_copy_to_vram()
369 migrate->dst[i + 1] = 0; in svm_migrate_copy_to_vram()
371 migrate->dst[i + 2] = 0; in svm_migrate_copy_to_vram()
373 migrate->dst[i + 3] = 0; in svm_migrate_copy_to_vram()
390 struct migrate_vma migrate = { 0 }; in svm_migrate_vma_to_vram() local
397 memset(&migrate, 0, sizeof(migrate)); in svm_migrate_vma_to_vram()
398 migrate.vma = vma; in svm_migrate_vma_to_vram()
399 migrate.start = start; in svm_migrate_vma_to_vram()
400 migrate.end = end; in svm_migrate_vma_to_vram()
401 migrate.flags = MIGRATE_VMA_SELECT_SYSTEM; in svm_migrate_vma_to_vram()
402 migrate.pgmap_owner = SVM_ADEV_PGMAP_OWNER(adev); in svm_migrate_vma_to_vram()
405 2 * sizeof(*migrate.src) + sizeof(uint64_t) + sizeof(dma_addr_t), in svm_migrate_vma_to_vram()
410 migrate.src = buf; in svm_migrate_vma_to_vram()
411 migrate.dst = migrate.src + npages; in svm_migrate_vma_to_vram()
412 scratch = (dma_addr_t *)(migrate.dst + npages); in svm_migrate_vma_to_vram()
419 r = migrate_vma_setup(&migrate); in svm_migrate_vma_to_vram()
426 cpages = migrate.cpages; in svm_migrate_vma_to_vram()
438 r = svm_migrate_copy_to_vram(node, prange, &migrate, &mfence, scratch, ttm_res_offset); in svm_migrate_vma_to_vram()
439 migrate_vma_pages(&migrate); in svm_migrate_vma_to_vram()
442 migrate_vma_finalize(&migrate); in svm_migrate_vma_to_vram()
444 mpages = cpages - svm_migrate_unsuccessful_pages(&migrate); in svm_migrate_vma_to_vram()
446 mpages, cpages, migrate.npages); in svm_migrate_vma_to_vram()
577 struct migrate_vma *migrate, struct dma_fence **mfence, in svm_migrate_copy_to_ram() argument
591 addr = migrate->start; in svm_migrate_copy_to_ram()
599 spage = migrate_pfn_to_page(migrate->src[i]); in svm_migrate_copy_to_ram()
625 dpage = svm_migrate_get_sys_page(migrate->vma, addr); in svm_migrate_copy_to_ram()
643 migrate->dst[i] = migrate_pfn(page_to_pfn(dpage)); in svm_migrate_copy_to_ram()
655 migrate->dst[i] = 0; in svm_migrate_copy_to_ram()
692 struct migrate_vma migrate = { 0 }; in svm_migrate_vma_to_ram() local
697 memset(&migrate, 0, sizeof(migrate)); in svm_migrate_vma_to_ram()
698 migrate.vma = vma; in svm_migrate_vma_to_ram()
699 migrate.start = start; in svm_migrate_vma_to_ram()
700 migrate.end = end; in svm_migrate_vma_to_ram()
701 migrate.pgmap_owner = SVM_ADEV_PGMAP_OWNER(adev); in svm_migrate_vma_to_ram()
703 migrate.flags = MIGRATE_VMA_SELECT_DEVICE_COHERENT; in svm_migrate_vma_to_ram()
705 migrate.flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE; in svm_migrate_vma_to_ram()
708 2 * sizeof(*migrate.src) + sizeof(uint64_t) + sizeof(dma_addr_t), in svm_migrate_vma_to_ram()
713 migrate.src = buf; in svm_migrate_vma_to_ram()
714 migrate.dst = migrate.src + npages; in svm_migrate_vma_to_ram()
715 migrate.fault_page = fault_page; in svm_migrate_vma_to_ram()
716 scratch = (dma_addr_t *)(migrate.dst + npages); in svm_migrate_vma_to_ram()
723 r = migrate_vma_setup(&migrate); in svm_migrate_vma_to_ram()
730 cpages = migrate.cpages; in svm_migrate_vma_to_ram()
734 upages = svm_migrate_unsuccessful_pages(&migrate); in svm_migrate_vma_to_ram()
743 r = svm_migrate_copy_to_ram(adev, prange, &migrate, &mfence, in svm_migrate_vma_to_ram()
745 migrate_vma_pages(&migrate); in svm_migrate_vma_to_ram()
747 upages = svm_migrate_unsuccessful_pages(&migrate); in svm_migrate_vma_to_ram()
749 upages, cpages, migrate.npages); in svm_migrate_vma_to_ram()
752 migrate_vma_finalize(&migrate); in svm_migrate_vma_to_ram()