drm/amdkfd: skip migration for pages already in VRAM
Migration skipped for pages that are already in VRAM domain. These could be the result of previous partial migrations to SYS RAM, and prefetch back to VRAM. Ex. Coherent pages in VRAM that were not written/invalidated after a copy-on-write. Signed-off-by: Alex Sierra <alex.sierra@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
1ade5f84cc
commit
6ffecc946f
1 changed files with 7 additions and 9 deletions
|
@ -293,15 +293,13 @@ svm_migrate_copy_to_vram(struct amdgpu_device *adev, struct svm_range *prange,
|
|||
for (i = j = 0; i < npages; i++) {
|
||||
struct page *spage;
|
||||
|
||||
dst[i] = cursor.start + (j << PAGE_SHIFT);
|
||||
migrate->dst[i] = svm_migrate_addr_to_pfn(adev, dst[i]);
|
||||
svm_migrate_get_vram_page(prange, migrate->dst[i]);
|
||||
|
||||
migrate->dst[i] = migrate_pfn(migrate->dst[i]);
|
||||
migrate->dst[i] |= MIGRATE_PFN_LOCKED;
|
||||
|
||||
if (migrate->src[i] & MIGRATE_PFN_VALID) {
|
||||
spage = migrate_pfn_to_page(migrate->src[i]);
|
||||
spage = migrate_pfn_to_page(migrate->src[i]);
|
||||
if (spage && !is_zone_device_page(spage)) {
|
||||
dst[i] = cursor.start + (j << PAGE_SHIFT);
|
||||
migrate->dst[i] = svm_migrate_addr_to_pfn(adev, dst[i]);
|
||||
svm_migrate_get_vram_page(prange, migrate->dst[i]);
|
||||
migrate->dst[i] = migrate_pfn(migrate->dst[i]);
|
||||
migrate->dst[i] |= MIGRATE_PFN_LOCKED;
|
||||
src[i] = dma_map_page(dev, spage, 0, PAGE_SIZE,
|
||||
DMA_TO_DEVICE);
|
||||
r = dma_mapping_error(dev, src[i]);
|
||||
|
|
Loading…
Add table
Reference in a new issue