Lines Matching full:migrate
12 #include <linux/migrate.h>
56 * Embedded structure containing enough information for GPU SVM to migrate
74 * optionally migrate the range to device memory, and create GPU bindings.
139 * has device memory as its backing, the driver is also expected to migrate any
231 * // Partial unmap, migrate any remaining device memory pages back to RAM
786 * @migrate_devmem: Flag indicating whether to migrate device memory
948 * drm_gpusvm_migrate_to_devmem with 'migrate.cpages != npages' in drm_gpusvm_range_chunk_size()
1562 * @migrate_pfn: Array of migrate page frame numbers
1602 * @migrate_pfn: Array of migrate page frame numbers to map
1665 * drm_gpusvm_migrate_to_devmem() - Migrate GPU SVM range to device memory
1691 struct migrate_vma migrate = { in drm_gpusvm_migrate_to_devmem() local
1731 buf = kvcalloc(npages, 2 * sizeof(*migrate.src) + sizeof(*dma_addr) + in drm_gpusvm_migrate_to_devmem()
1737 dma_addr = buf + (2 * sizeof(*migrate.src) * npages); in drm_gpusvm_migrate_to_devmem()
1738 pages = buf + (2 * sizeof(*migrate.src) + sizeof(*dma_addr)) * npages; in drm_gpusvm_migrate_to_devmem()
1746 migrate.vma = vas; in drm_gpusvm_migrate_to_devmem()
1747 migrate.src = buf; in drm_gpusvm_migrate_to_devmem()
1748 migrate.dst = migrate.src + npages; in drm_gpusvm_migrate_to_devmem()
1750 err = migrate_vma_setup(&migrate); in drm_gpusvm_migrate_to_devmem()
1754 if (!migrate.cpages) { in drm_gpusvm_migrate_to_devmem()
1759 if (migrate.cpages != npages) { in drm_gpusvm_migrate_to_devmem()
1764 err = ops->populate_devmem_pfn(devmem_allocation, npages, migrate.dst); in drm_gpusvm_migrate_to_devmem()
1769 migrate.src, npages, DMA_TO_DEVICE); in drm_gpusvm_migrate_to_devmem()
1774 struct page *page = pfn_to_page(migrate.dst[i]); in drm_gpusvm_migrate_to_devmem()
1777 migrate.dst[i] = migrate_pfn(migrate.dst[i]); in drm_gpusvm_migrate_to_devmem()
1792 drm_gpusvm_migration_unlock_put_pages(npages, migrate.dst); in drm_gpusvm_migrate_to_devmem()
1793 migrate_vma_pages(&migrate); in drm_gpusvm_migrate_to_devmem()
1794 migrate_vma_finalize(&migrate); in drm_gpusvm_migrate_to_devmem()
1811 * @mpages: Number of pages to migrate
1812 * @src_mpfn: Source array of migrate PFNs
1813 * @mpfn: Array of migrate PFNs to populate
1816 * This function populates the RAM migrate page frame numbers (PFNs) for the
1972 * __drm_gpusvm_migrate_to_ram() - Migrate GPU SVM range to RAM (internal)
1991 struct migrate_vma migrate = { in __drm_gpusvm_migrate_to_ram() local
2024 migrate.start = start; in __drm_gpusvm_migrate_to_ram()
2025 migrate.end = end; in __drm_gpusvm_migrate_to_ram()
2028 buf = kvcalloc(npages, 2 * sizeof(*migrate.src) + sizeof(*dma_addr) + in __drm_gpusvm_migrate_to_ram()
2034 dma_addr = buf + (2 * sizeof(*migrate.src) * npages); in __drm_gpusvm_migrate_to_ram()
2035 pages = buf + (2 * sizeof(*migrate.src) + sizeof(*dma_addr)) * npages; in __drm_gpusvm_migrate_to_ram()
2037 migrate.vma = vas; in __drm_gpusvm_migrate_to_ram()
2038 migrate.src = buf; in __drm_gpusvm_migrate_to_ram()
2039 migrate.dst = migrate.src + npages; in __drm_gpusvm_migrate_to_ram()
2041 err = migrate_vma_setup(&migrate); in __drm_gpusvm_migrate_to_ram()
2046 if (!migrate.cpages) in __drm_gpusvm_migrate_to_ram()
2051 if (!(migrate.src[i] & MIGRATE_PFN_MIGRATE)) in __drm_gpusvm_migrate_to_ram()
2054 page = migrate_pfn_to_page(migrate.src[i]); in __drm_gpusvm_migrate_to_ram()
2066 migrate.src, migrate.dst, in __drm_gpusvm_migrate_to_ram()
2071 err = drm_gpusvm_migrate_map_pages(dev, dma_addr, migrate.dst, npages, in __drm_gpusvm_migrate_to_ram()
2077 pages[i] = migrate_pfn_to_page(migrate.src[i]); in __drm_gpusvm_migrate_to_ram()
2085 drm_gpusvm_migration_unlock_put_pages(npages, migrate.dst); in __drm_gpusvm_migrate_to_ram()
2086 migrate_vma_pages(&migrate); in __drm_gpusvm_migrate_to_ram()
2087 migrate_vma_finalize(&migrate); in __drm_gpusvm_migrate_to_ram()
2168 * drm_gpusvm_migrate_to_ram() - Migrate GPU SVM range to RAM (page fault handler)
2171 * This function is a page fault handler used to migrate a GPU SVM range to RAM.
2173 * the internal migration function to migrate the range back to RAM.