Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f86d0448 authored by Laurent Dufour's avatar Laurent Dufour Committed by Gerrit - the friendly Code Review server
Browse files

mm/migrate: Pass vm_fault pointer to migrate_misplaced_page()



migrate_misplaced_page() is only called during the page fault handling so
it's better to pass the pointer to the struct vm_fault instead of the vma.

This way during the speculative page fault path the saved vma->vm_flags
could be used.

Change-Id: I254a7c9d91dca9ee8a9afd5eccd6de9af5dc8bc0
Acked-by: default avatarDavid Rientjes <rientjes@google.com>
Signed-off-by: default avatarLaurent Dufour <ldufour@linux.vnet.ibm.com>
Patch-mainline: linux-mm @ Tue, 17 Apr 2018 16:33:19
Signed-off-by: default avatarVinayak Menon <vinmenon@codeaurora.org>
parent 47e3eb15
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -126,14 +126,14 @@ static inline void __ClearPageMovable(struct page *page)
#ifdef CONFIG_NUMA_BALANCING
extern bool pmd_trans_migrating(pmd_t pmd);
extern int migrate_misplaced_page(struct page *page,
				  struct vm_area_struct *vma, int node);
				  struct vm_fault *vmf, int node);
#else
static inline bool pmd_trans_migrating(pmd_t pmd)
{
	return false;
}
static inline int migrate_misplaced_page(struct page *page,
					 struct vm_area_struct *vma, int node)
					 struct vm_fault *vmf, int node)
{
	return -EAGAIN; /* can't migrate now */
}
+1 −1
Original line number Diff line number Diff line
@@ -3968,7 +3968,7 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf)
	}

	/* Migrate to the requested node */
	migrated = migrate_misplaced_page(page, vma, target_nid);
	migrated = migrate_misplaced_page(page, vmf, target_nid);
	if (migrated) {
		page_nid = target_nid;
		flags |= TNF_MIGRATED;
+2 −2
Original line number Diff line number Diff line
@@ -1925,7 +1925,7 @@ bool pmd_trans_migrating(pmd_t pmd)
 * node. Caller is expected to have an elevated reference count on
 * the page that will be dropped by this function before returning.
 */
int migrate_misplaced_page(struct page *page, struct vm_area_struct *vma,
int migrate_misplaced_page(struct page *page, struct vm_fault *vmf,
			   int node)
{
	pg_data_t *pgdat = NODE_DATA(node);
@@ -1938,7 +1938,7 @@ int migrate_misplaced_page(struct page *page, struct vm_area_struct *vma,
	 * with execute permissions as they are probably shared libraries.
	 */
	if (page_mapcount(page) != 1 && page_is_file_cache(page) &&
	    (vma->vm_flags & VM_EXEC))
	    (vmf->vma_flags & VM_EXEC))
		goto out;

	/*