[PATCH 24/35] autonuma: follow_page check for pte_numa/pmd_numa

Andrea Arcangeli
2012-05-25T17:08:30Z

Without this, follow_page wouldn't trigger the NUMA hinting faults.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
---
mm/memory.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/memory.c b/mm/memory.c
index 7f265fc..e3aa47c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1483,7 +1483,7 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
goto no_page_table;

pmd = pmd_offset(pud, address);
- if (pmd_none(*pmd))
+ if (pmd_none(*pmd) || pmd_numa(*pmd))
goto no_page_table;
if (pmd_huge(*pmd) && vma->vm_flags & VM_HUGETLB) {
BUG_ON(flags & FOLL_GET);
@@ -1517,7 +1517,7 @@ split_fallthrough:
ptep = pte_offset_map_lock(mm, pmd, address, &ptl);

pte = *ptep;
- if (!pte_present(pte))
+ if (!pte_present(pte) || pte_numa(pte))
goto no_page;
if ((flags & FOLL_WRITE) && !pte_write(pte))
goto unlock;