mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
mm/migrate: add a flags parameter to migrate_vma
The src_owner field in struct migrate_vma is being used for two purposes, it acts as a selection filter for which types of pages are to be migrated and it identifies device private pages owned by the caller. Split this into separate parameters so the src_owner field can be used just to identify device private pages owned by the caller of migrate_vma_setup(). Rename the src_owner field to pgmap_owner to reflect it is now used only to identify which device private pages to migrate. Link: https://lore.kernel.org/r/20200723223004.9586-3-rcampbell@nvidia.com Signed-off-by: Ralph Campbell <rcampbell@nvidia.com> Reviewed-by: Bharata B Rao <bharata@linux.ibm.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
committed by
Jason Gunthorpe
parent
1a77decd0c
commit
5143192cd4
@@ -585,15 +585,6 @@ static void dmirror_migrate_alloc_and_copy(struct migrate_vma *args,
|
||||
*/
|
||||
spage = migrate_pfn_to_page(*src);
|
||||
|
||||
/*
|
||||
* Don't migrate device private pages from our own driver or
|
||||
* others. For our own we would do a device private memory copy
|
||||
* not a migration and for others, we would need to fault the
|
||||
* other device's page into system memory first.
|
||||
*/
|
||||
if (spage && is_zone_device_page(spage))
|
||||
continue;
|
||||
|
||||
dpage = dmirror_devmem_alloc_page(mdevice);
|
||||
if (!dpage)
|
||||
continue;
|
||||
@@ -702,7 +693,8 @@ static int dmirror_migrate(struct dmirror *dmirror,
|
||||
args.dst = dst_pfns;
|
||||
args.start = addr;
|
||||
args.end = next;
|
||||
args.src_owner = NULL;
|
||||
args.pgmap_owner = NULL;
|
||||
args.flags = MIGRATE_VMA_SELECT_SYSTEM;
|
||||
ret = migrate_vma_setup(&args);
|
||||
if (ret)
|
||||
goto out;
|
||||
@@ -1053,7 +1045,8 @@ static vm_fault_t dmirror_devmem_fault(struct vm_fault *vmf)
|
||||
args.end = args.start + PAGE_SIZE;
|
||||
args.src = &src_pfns;
|
||||
args.dst = &dst_pfns;
|
||||
args.src_owner = dmirror->mdevice;
|
||||
args.pgmap_owner = dmirror->mdevice;
|
||||
args.flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE;
|
||||
|
||||
if (migrate_vma_setup(&args))
|
||||
return VM_FAULT_SIGBUS;
|
||||
|
Reference in New Issue
Block a user