Lines Matching refs:migrate

7 #include <linux/migrate.h>
18 * to migrate memory back and forth between device memory and system RAM and
27 * population requests and after that migrate all device pages to system ram.
39 * and it can evict the range to system before trying to migrate. Ideally an
40 * implementation would just try to migrate the missing part of the range and
53 * migrate to / from device memory.
166 * @migrate_pfn: Array of migrate page frame numbers
206 * @migrate_pfn: Array of migrate page frame numbers to map
276 * @devmem_allocation: The device memory allocation to migrate to.
281 * @start: Start of the virtual address range to migrate.
282 * @end: End of the virtual address range to migrate.
307 struct migrate_vma migrate = {
343 buf = kvcalloc(npages, 2 * sizeof(*migrate.src) + sizeof(*dma_addr) +
349 dma_addr = buf + (2 * sizeof(*migrate.src) * npages);
350 pages = buf + (2 * sizeof(*migrate.src) + sizeof(*dma_addr)) * npages;
358 migrate.vma = vas;
359 migrate.src = buf;
360 migrate.dst = migrate.src + npages;
362 err = migrate_vma_setup(&migrate);
366 if (!migrate.cpages) {
371 if (migrate.cpages != npages) {
376 err = ops->populate_devmem_pfn(devmem_allocation, npages, migrate.dst);
381 migrate.src, npages, DMA_TO_DEVICE);
386 struct page *page = pfn_to_page(migrate.dst[i]);
389 migrate.dst[i] = migrate_pfn(migrate.dst[i]);
404 drm_pagemap_migration_unlock_put_pages(npages, migrate.dst);
405 migrate_vma_pages(&migrate);
406 migrate_vma_finalize(&migrate);
423 * @mpages: Number of pages to migrate
424 * @src_mpfn: Source array of migrate PFNs
425 * @mpfn: Array of migrate PFNs to populate
428 * This function populates the RAM migrate page frame numbers (PFNs) for the
603 struct migrate_vma migrate = {
636 migrate.start = start;
637 migrate.end = end;
640 buf = kvcalloc(npages, 2 * sizeof(*migrate.src) + sizeof(*dma_addr) +
646 dma_addr = buf + (2 * sizeof(*migrate.src) * npages);
647 pages = buf + (2 * sizeof(*migrate.src) + sizeof(*dma_addr)) * npages;
649 migrate.vma = vas;
650 migrate.src = buf;
651 migrate.dst = migrate.src + npages;
653 err = migrate_vma_setup(&migrate);
658 if (!migrate.cpages)
663 if (!(migrate.src[i] & MIGRATE_PFN_MIGRATE))
666 page = migrate_pfn_to_page(migrate.src[i]);
678 migrate.src, migrate.dst,
683 err = drm_pagemap_migrate_map_pages(dev, dma_addr, migrate.dst, npages,
689 pages[i] = migrate_pfn_to_page(migrate.src[i]);
697 drm_pagemap_migration_unlock_put_pages(npages, migrate.dst);
698 migrate_vma_pages(&migrate);
699 migrate_vma_finalize(&migrate);
726 * This function is a page fault handler used to migrate a virtual range