Skip to content
Permalink
Browse files
mm/gup: Expose mm_populate_vma() for use when the vma is known
When a vma is known, avoid calling mm_populate to search for the vma to
populate.

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
  • Loading branch information
howlett authored and intel-lab-lkp committed Dec 10, 2020
1 parent 3af97a2 commit e89ae5d0c814effeca4f7907d7dad47134561db2
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
@@ -2587,8 +2587,12 @@ static inline void mm_populate(unsigned long addr, unsigned long len)
/* Ignore errors */
(void) __mm_populate(addr, len, 1);
}
extern void mm_populate_vma(struct vm_area_struct *vma, unsigned long start,
unsigned long end);
#else
static inline void mm_populate(unsigned long addr, unsigned long len) {}
void mm_populate_vma(struct vm_area_struct *vma, unsigned long start,
unsigned long end) {}
#endif

/* These take the mm semaphore themselves */
@@ -1431,6 +1431,26 @@ long populate_vma_page_range(struct vm_area_struct *vma,
NULL, NULL, locked);
}

/*
* mm_populate_vma() - Populate a single range in a single vma.
* @vma: The vma to populate.
* @start: The start address to populate
* @end: The end address to stop populating
*
* Note: Ignores errors.
*/
void mm_populate_vma(struct vm_area_struct *vma, unsigned long start,
unsigned long end)
{
struct mm_struct *mm = current->mm;
int locked = 1;

mmap_read_lock(mm);
populate_vma_page_range(vma, start, end, &locked);
if (locked)
mmap_read_unlock(mm);
}

/*
* __mm_populate - populate and/or mlock pages within a range of address space.
*

0 comments on commit e89ae5d

Please sign in to comment.